home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / inter54b.zip / INTERRUP.G < prev    next >
Text File  |  1997-06-29  |  256KB  |  6,715 lines

  1. Interrupt List, part 7 of 16
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  3. --------D-215F00-----------------------------
  4. INT 21 - DOS 3.1+ network - GET REDIRECTION MODE
  5.     AX = 5F00h
  6.     BL = redirection type
  7.         03h printer
  8.         04h disk drive
  9. Return: CF set on error
  10.         AX = error code (see #1332 at AH=59h/BX=0000h)
  11.     CF clear if successful
  12.         BH = redirection state
  13.         00h off
  14.         01h on
  15. Note:    calls INT 2F/AX=111Eh with AX on top of the stack
  16. SeeAlso: AX=5F01h,INT 2F/AX=111Eh
  17. --------D-215F01-----------------------------
  18. INT 21 - DOS 3.1+ network - SET REDIRECTION MODE
  19.     AX = 5F01h
  20.     BL = redirection type
  21.         03h printer
  22.         04h disk drive
  23.     BH = redirection state
  24.         00h off
  25.         01h on
  26. Return: CF set on error
  27.         AX = error code (see #1332 at AH=59h/BX=0000h)
  28.     CF clear if successful
  29. Notes:    when redirection is off, the local device (if any) rather than the
  30.       remote device is used
  31.     calls INT 2F/AX=111Eh with AX on top of the stack
  32. SeeAlso: AX=5F00h,INT 2F/AX=111Eh,INT 60/AX=0002h
  33. --------D-215F02-----------------------------
  34. INT 21 - DOS 3.1+ network - GET REDIRECTION LIST ENTRY
  35.     AX = 5F02h
  36.     BX = zero-based redirection list index
  37.     CX = driver signature
  38.         0000h LANtastic
  39.         4E57h ('NW') NetWare
  40.     DS:SI -> 16-byte buffer for ASCIZ local device name or drive letter
  41.           followed by colon
  42.     ES:DI -> 128-byte buffer for ASCIZ network name
  43. Return: CF clear if successful
  44.         BH = device status
  45.         00h valid
  46.         01h invalid
  47.         02h valid (connected from inside Windows for Workgroups v3.11)
  48.         BL = device type
  49.         03h printer
  50.         04h disk drive
  51.         CX = user data previously set with AX=5F03h
  52.         DS:SI and ES:DI buffers filled
  53.         DX,BP destroyed
  54.     CF set on error
  55.         AX = error code (01h,12h) (see #1332 at AH=59h/BX=0000h)
  56. Notes:    this function is passed through to INT 2F/AX=111Eh by the DOS kernel
  57.     error code 12h is returned if BX is greater than the size of the list
  58.     also supported by Banyan VINES, PC-NFS, LANtastic, and 10NET
  59.     supported by LapLink RemoteAccess but returns the local drive letter;
  60.       the remote drive letter can be obtained with INT 2F/AX=Cxxxh
  61.       (see INT 2F/AX=C000h"LapLink")
  62.     the returned device name may or may not include a colon, depending on
  63.       the network software
  64. SeeAlso: AX=5F03h,AX=5F46h,INT 2F/AX=111Eh,INT 2F/AX=C000h"LapLink"
  65. --------D-215F03-----------------------------
  66. INT 21 - DOS 3.1+ network - REDIRECT DEVICE
  67.     AX = 5F03h
  68.     BL = device type
  69.         03h printer
  70.         04h disk drive
  71.     CX = user data to save
  72.         0000h for LANtastic
  73.         4E57h ("NW") for NetWare 4.0 requester
  74.     DS:SI -> ASCIZ local device name (16 bytes max)
  75.     ES:DI -> ASCIZ network name + ASCIZ password (128 bytes max total)
  76. Return: CF clear if successful
  77.     CF set on error
  78.         AX = error code (01h,03h,05h,08h,0Fh,12h) (see #1332 at AH=59h)
  79. Notes:    if device type is disk drive, DS:SI must point at either a null string
  80.       or a string consisting the drive letter followed by a colon; if a
  81.       null string, the network attempts to access the destination without
  82.       redirecting a local drive
  83.     the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
  84.     also supported by Banyan VINES, LANtastic, and 10NET
  85. SeeAlso: AX=5F02h,AX=5F04h,INT 2F/AX=111Eh,INT 60/AX=0002h
  86. --------D-215F04-----------------------------
  87. INT 21 - DOS 3.1+ network - CANCEL REDIRECTION
  88.     AX = 5F04h
  89.     DS:SI -> ASCIZ local device name or path
  90.     CX = 4E57h ("NW") for NetWare 4.0 requester
  91. Return: CF clear if successful
  92.     CF set on error
  93.         AX = error code (01h,03h,05h,08h,0Fh,12h) (see #1332 at AH=59h)
  94. Notes:    the DS:SI string must be either a local device name, a drive letter
  95.       followed by a colon, or a network directory beginning with two
  96.       backslashes
  97.     the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
  98.     also supported by Banyan VINES, LANtastic, and 10NET
  99.     for NetWare, if only a server name is specified (i.e. "\\SERVER"),
  100.       the connection to that server will be closed
  101. SeeAlso: AX=5F03h,INT 2F/AX=111Eh,INT 60/AX=0003h
  102. --------D-215F05-----------------------------
  103. INT 21 - DOS 4.0+ network - GET EXTENDED REDIRECTION LIST ENTRY
  104.     AX = 5F05h
  105.     BX = redirection list index
  106.     DS:SI -> buffer for ASCIZ source device name
  107.     ES:DI -> buffer for destination ASCIZ network path
  108. Return: CF set on error
  109.         AX = error code (see #1332 at AH=59h/BX=0000h)
  110.     CF clear if successful
  111.         AX = server's network process ID handle (10NET)
  112.         BH = device status flag (bit 0 clear if valid)
  113.         BL = device type (03h if printer, 04h if drive)
  114.         CX = stored parameter value (user data) from AX=5F03h
  115.         BP = NETBIOS local session number
  116.         DS:SI buffer filled
  117.         ES:DI buffer filled
  118. Notes:    the local session number allows sharing the redirector's session number
  119.     if an error is caused on the NETBIOS LSN, the redirector may be unable
  120.       to correctly recover from errors
  121.     the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
  122.     supported by DR DOS 5.0
  123.     also supported by 10NET v5.0
  124. SeeAlso: AX=5F06h"Network",INT 2F/AX=111Eh
  125. --------O-215F05-----------------------------
  126. INT 21 - STARLITE architecture - MAP LOCAL DRIVE LETTER TO REMOTE FILE SYSTEM
  127.     AX = 5F05h
  128.     DL = drive number (0=A:)
  129.     DS:SI -> ASCIZ name of the object to map the drive to
  130. Return: CF set on error
  131.         AX = error code (see #1332 at AH=59h/BX=0000h)
  132.     CF clear if successful
  133. SeeAlso: AX=5F06h"STARLITE",INT 60/AX=0002h
  134. --------N-215F06-----------------------------
  135. INT 21 U - Network - GET FULL REDIRECTION LIST
  136.     AX = 5F06h
  137.     ???
  138. Return: ???
  139. Notes:    similar to AX=5F02h and AX=5F05h, but also returns redirections
  140.       excluded from those calls for various reasons
  141.     calls INT 2F/AX=111Eh with AX on top of the stack
  142. SeeAlso: AX=5F05h"DOS",INT 2F/AX=111Eh
  143. --------O-215F06-----------------------------
  144. INT 21 - STARLITE architecture - UNMAP DRIVE LETTER
  145.     AX = 5F06h
  146.     DL = drive to be unmapped (0=A:)
  147. Return: CF set on error
  148.         AX = error code (see #1332 at AH=59h/BX=0000h)
  149.     CF clear if successful
  150. SeeAlso: AX=5F05h"STARLITE",INT 60/AX=0003h
  151. --------D-215F07-----------------------------
  152. INT 21 - DOS 5+ - ENABLE DRIVE
  153.     AX = 5F07h
  154.     DL = drive number (0=A:)
  155. Return: CF clear if successful
  156.     CF set on error
  157.         AX = error code (0Fh) (see #1332 at AH=59h/BX=0000h)
  158. Notes:    simply sets the "valid" bit in the drive's CDS
  159.     this function is not supported by Novell DOS 7 through at least
  160.       Update 4, but support was added by Update 13
  161. SeeAlso: AH=52h,AX=5F08h"DOS"
  162. --------O-215F07-----------------------------
  163. INT 21 - STARLITE architecture - MAKE NAMED OBJECT AVAILABLE ON NETWORK
  164.     AX = 5F07h
  165.     DS:SI -> ASCIZ name of object to offer to network
  166.     ES:DI -> ASCIZ name under which object will be known on the network
  167.         MUST begin with three slashes
  168. Return: CF set on error
  169.         AX = error code (see #1332 at AH=59h/BX=0000h)
  170.     CF clear if successful
  171. SeeAlso: AX=5F08h"STARLITE"
  172. --------D-215F08-----------------------------
  173. INT 21 - DOS 5+ - DISABLE DRIVE
  174.     AX = 5F08h
  175.     DL = drive number (0=A:)
  176. Return: CF clear if successful
  177.     CF set on error
  178.         AX = error code (0Fh) (see #1332 at AH=59h/BX=0000h)
  179. Notes:    simply clears the "valid" bit in the drive's CDS
  180.     this function is not supported by Novell DOS 7 through at least
  181.       Update 4, but support was added by Update 13
  182. SeeAlso: AH=52h,AX=5F07h"DOS"
  183. --------O-215F08-----------------------------
  184. INT 21 - STARLITE architecture - REMOVE GLOBAL NETWORK NAME OF OBJECT
  185.     AX = 5F08h
  186.     DS:SI -> ASCIZ network name (not local name) of object to unshare
  187. Return: CF set on error
  188.         AX = error code (see #1332 at AH=59h/BX=0000h)
  189.     CF clear if successful
  190. SeeAlso: AX=5F07h"STARLITE"
  191. --------O-215F09-----------------------------
  192. INT 21 - STARLITE architecture - BIND TO NETWORK DEVICE
  193.     AX = 5F09h
  194.     DS:DX -> ASCIZ name of the device driver to attach to
  195. Return: CF set on error
  196.         AX = error code (see #1332 at AH=59h/BX=0000h)
  197.     CF clear if successful
  198. Note:    the STARLITE distributed file system can attach to multiple networks
  199.       simultaneously
  200. SeeAlso: AX=5F0Ah
  201. --------O-215F0A-----------------------------
  202. INT 21 - STARLITE architecture - DETACH FROM NETWORK DEVICE
  203.     AX = 5F0Ah
  204.     DS:DX -> ASCIZ name of device driver to detach from
  205. Return: CF set on error
  206.         AX = error code (see #1332 at AH=59h/BX=0000h)
  207.     CF clear if successful
  208. SeeAlso: AX=5F09h
  209. --------N-215F30-----------------------------
  210. INT 21 U - LAN Manager Enhanced DOS - GET REDIRECTOR VERSION
  211.     AX = 5F30h
  212. Return: AX = version (AH=major,AL=minor)
  213. --------N-215F32-----------------------------
  214. INT 21 u - Named Pipes - LOCAL DosQNmPipeInfo
  215.     AX = 5F32h
  216.     BX = handle
  217.     CX = size of _PIPEINFO structure
  218.     DX = level (must be 0001h)
  219.     DS:SI -> _PIPEINFO structure (see #1353)
  220. Return: CF clear if successful
  221.         _PIPEINFO structure filled in
  222.     CF set on error
  223.         AX = error code
  224. Note:    this function was introduced by LAN Manager but is also supported by
  225.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  226.       Machines, and others
  227. SeeAlso: AX=5F33h,AX=5F34h
  228.  
  229. Format of Named Pipes _PIPEINFO structure:
  230. Offset    Size    Description    (Table 1353)
  231.  00h    WORD    size of outgoing buffer
  232.  02h    WORD    size of incoming buffer
  233.  04h    BYTE    maximum number of instances allowed
  234.  05h    BYTE    current number of instances
  235.  06h    BYTE    length of the name (including terminating NUL)
  236.  07h  N BYTEs    name
  237. --------N-215F33-----------------------------
  238. INT 21 u - Named Pipes - LOCAL DosQNmPHandState
  239.     AX = 5F33h
  240.     BX = handle
  241. Return: CF clear if successful
  242.         AH = pipe mode bit mask (see #1354)
  243.         AL = maximum number of instances
  244.     CF set on error
  245.         AX = error code
  246. Note:    this function was introduced by LAN Manager but is also supported by
  247.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  248.       Machines, and others
  249. SeeAlso: AX=5F32h,AX=5F34h
  250.  
  251. Bitfields for Named Pipes pipe mode:
  252. Bit(s)    Description    (Table 1354)
  253.  7    set if nonblocking, clear if blocking
  254.  6    set if server end, clear if client end
  255.  2    set if write in message mode, clear if write in byte mode
  256.  0    set if read in message mode, clear if read in byte mode
  257. --------N-215F34-----------------------------
  258. INT 21 u - Named Pipes - LOCAL DosSetNmPHandState
  259.     AX = 5F34h
  260.     BX = handle
  261.     CX = pipe mode bit mask
  262.         bit 15: set if nonblocking, clear if blocking
  263.         bit     8: set if read in message mode, clear if read in byte mode
  264. Return: CF clear if successful
  265.     CF set if error
  266.         AX = error code
  267. Note:    this function was introduced by LAN Manager but is also supported by
  268.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  269.       Machines, and others
  270. SeeAlso: AX=5F32h,AX=5F33h,AX=5F36h
  271. --------N-215F35-----------------------------
  272. INT 21 u - Named Pipes - LOCAL DosPeekNmPipe
  273.     AX = 5F35h
  274.     BX = handle
  275.     CX = buffer length
  276.     DS:SI -> buffer
  277. Return: CF set on error
  278.         AX = error code
  279.     CF clear if successful (LAN Manager v1-v2)
  280.     AX = 0000h if successful (LAN Manager 3.x)
  281.     ---if successful---
  282.         CX = bytes read
  283.         SI = bytes left in the pipe
  284.         DX = bytes left in the current message
  285.         AX = pipe status (v1-v2) (see #1355)
  286.         DI = pipe status (v3.x)
  287. Note:    this function was introduced by LAN Manager but is also supported by
  288.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  289.       Machines, and others
  290. SeeAlso: AX=5F38h,AX=5F39h,AX=5F51h
  291.  
  292. (Table 1355)
  293. Values for pipe status:
  294.  0001h    disconnected
  295.  0002h    listening
  296.  0003h    connected
  297.  0004h    closing
  298. --------N-215F36-----------------------------
  299. INT 21 u - Named Pipes - LOCAL DosTransactNmPipe
  300.     AX = 5F36h
  301.     BX = handle
  302.     CX = in buffer length
  303.     DS:SI -> in buffer
  304.     DX = out buffer length
  305.     ES:DI -> out buffer
  306. Return: CF clear if successful
  307.         CX = bytes read
  308.     CF set on error
  309.         AX = error code
  310. Note:    this function was introduced by LAN Manager but is also supported by
  311.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  312.       Machines, and others
  313. SeeAlso: AX=5F34h,AX=5F37h
  314. --------N-215F37-----------------------------
  315. INT 21 u - Named Pipes - DosCallNmPipe
  316.     AX = 5F37h
  317.     DS:SI -> DosCallNmPipe stack frame (see #1356)
  318. Return: CF clear if successful
  319.         CX = bytes read
  320.     CF set on error
  321.         AX = error code
  322. Note:    this function was introduced by LAN Manager but is also supported by
  323.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  324.       Machines, and others
  325. SeeAlso: AX=5F36h,AX=5F38h
  326.  
  327. Format of Named Pipes DosCallNmPipe stack frame:
  328. Offset    Size    Description    (Table 1356)
  329.  00h    DWORD    timeout
  330.  04h    DWORD    -> bytes read WORD (not used!)
  331.  08h    WORD    out buffer length
  332.  0Ah    DWORD    address of out buffer
  333.  0Eh    WORD    in buffer length
  334.  10h    DWORD    address of in buffer
  335.  14h    DWORD    address of pipe name
  336. --------N-215F38-----------------------------
  337. INT 21 u - Named Pipes - LOCAL DosWaitNmPipe - AWAIT AVAIL. OF PIPE INSTANCE
  338.     AX = 5F38h
  339.     DS:DX -> pipe name
  340.     BX:CX = timeout value
  341. Return: CF clear if successful
  342.     CF set if error
  343.         AX = error code
  344. Notes:    when a client gets a return code of ERROR_PIPE_BUSY on attempting to
  345.       open a pipe, it should issue this call to wait until the pipe
  346.       instance becomes available again; on return from this call, the
  347.       client must attempt to open the pipe once again
  348.     this function was introduced by LAN Manager but is also supported by
  349.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  350.       Machines, and others
  351. SeeAlso: AX=5F37h,AX=5F39h
  352. --------N-215F39-----------------------------
  353. INT 21 U - Named Pipes - LOCAL DosRawReadNmPipe
  354.     AX = 5F39h
  355.     BX = handle
  356.     CX = buffer length
  357.     DS:DX -> buffer
  358. Return: CF clear if successful
  359.         CX = bytes read
  360.     CF set if error
  361.         AX = error code
  362. Notes:    this function was introduced by LAN Manager but is also supported by
  363.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  364.       Machines, and others
  365.     not documented in the LAN Manager Toolkit
  366. SeeAlso: AX=5F35h,AX=5F3Ah,INT 2F/AX=1186h
  367. --------N-215F3A-----------------------------
  368. INT 21 U - Named Pipes - LOCAL DosRawWriteNmPipe
  369.     AX = 5F3Ah
  370.     BX = handle
  371.     CX = buffer length
  372.     DS:DX -> buffer
  373. Return: CF clear if successful
  374.         CX = bytes written
  375.     CF set if error
  376.         AX = error code
  377. Notes:    this function was introduced by LAN Manager but is also supported by
  378.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  379.       Machines, and others
  380.     not documented in the LAN Manager Toolkit
  381. SeeAlso: AX=5F39h,AX=5F3Bh,INT 2F/AX=118Fh
  382. --------N-215F3B-----------------------------
  383. INT 21 u - LAN Manager Enhanced DOS - NetHandleSetInfo
  384.     AX = 5F3Bh
  385.     BX = handle
  386.     CX = handle_info_1 structure length or sizeof DWORD
  387.     DI = parameter number to set
  388.         0000h all
  389.         0001h number of milliseconds
  390.         0002h number of characters
  391.     DS:DX -> handle_info_1 structure (DI=0000h) (see #1357)
  392.         or DWORD (DI=0001h or 0002h)
  393.     SI = level of information (0001h)
  394. Return: CF clear if successful
  395.         CX = total bytes available
  396.     CF set if error
  397.         AX = error code
  398. SeeAlso: AX=5F3Ch
  399.  
  400. Format of LAN Manager handle_info_1 structure:
  401. Offset    Size    Description    (Table 1357)
  402.  00h    DWORD    number of milliseconds which workstation collects data before
  403.           it sends the data to the named pipe
  404.  04h    DWORD    number of characters which workstation collects before it
  405.           sends the data to the named pipe
  406. --------N-215F3C-----------------------------
  407. INT 21 u - LAN Manager Enhanced DOS - NetHandleGetInfo
  408.     AX = 5F3Ch
  409.     BX = handle
  410.     CX = length of handle_info_1 structure
  411.     DS:DX -> handle_info_1 structure (see #1357)
  412.     SI = level of information (must be 0001h)
  413. Return: CF clear if successful
  414.         CX = total bytes available
  415.     CF set if error
  416.         AX = error code
  417. SeeAlso: AX=5F3Bh
  418. --------N-215F3D-----------------------------
  419. INT 21 U - LAN Manager Enhanced DOS - WRITE MAILSLOT???
  420.     AX = 5F3Dh
  421.     ???
  422. Return: ???
  423. --------N-215F3E-----------------------------
  424. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetSpecialSMB
  425.     AX = 5F3Eh
  426.     ???
  427. Return: ???
  428. Note:    This function is not documented anywhere in the LAN Manager 2.x Toolkit
  429.       but was documented in LAN Manager 1.x manuals.
  430. --------N-215F3F-----------------------------
  431. INT 21 U - LAN Manager Enhanced DOS - REMOTE API CALL
  432.     AX = 5F3Fh
  433.     CX = api number
  434.     ES:DI -> data descriptor
  435.     ES:SI -> parameter descriptor
  436.     ES:DX -> auxiliary descriptor (if DX <> 0)
  437.     ???
  438. Return: ???
  439. --------N-215F40-----------------------------
  440. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetMessageBufferSend
  441.     AX = 5F40h
  442.     DS:DX -> NetMessageBufferSend parameter structure (see #1358)
  443. Return: AX = error code
  444.  
  445. Format of LAN Manager NetMessageBufferSend parameter structure:
  446. Offset    Size    Description    (Table 1358)
  447.  00h    DWORD    -> recipient name (name for specific user, name* for domain
  448.               wide name, * for broadcast)
  449.  04h    DWORD    -> buffer
  450.  08h    WORD    length of buffer
  451. --------N-215F41-----------------------------
  452. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceEnum
  453.     AX = 5F41h
  454.     BL = level of detail (0000h, 0001h or 0002h)
  455.     CX = buffer length
  456.     ES:DI -> buffer of service_info_0, service_info_1, or service_info_2
  457.         (see #1359,#1360,#1361)
  458. Return: CF clear if successful
  459.         CX = entries read
  460.         DX = total available
  461.     CF set on error
  462.         AX = error code
  463.  
  464. Format of LAN Manager service_info_0 structure:
  465. Offset    Size    Description    (Table 1359)
  466.  00h 16 BYTEs    name
  467. SeeAlso: #1360,#1361
  468.  
  469. Format of service_info_1 structure:
  470. Offset    Size    Description    (Table 1360)
  471.  00h 16 BYTEs    name
  472.  10h    WORD    status bitmask (see #1362)
  473.  12h    DWORD    status code (see #1363)
  474.         (also see Microsoft LAN Manager Programmer's Reference)
  475.  16h    WORD    process id
  476. SeeAlso: #1359,#1361
  477.  
  478. Format of service_info_2 structure:
  479. Offset    Size    Description    (Table 1361)
  480.  00h 16 BYTEs    name
  481.  10h    WORD    status bitmask (see #1362)
  482.  12h    DWORD    status code (see #1363)
  483.  16h    WORD    process id
  484.  18h 64 BYTEs    text
  485. SeeAlso: #1359,#1360
  486.  
  487. Bitfields for LAN Manager status bitmask:
  488. Bit(s)    Description    (Table 1362)
  489.  0,1    00 uninstall
  490.         01 install pending
  491.         10 uninstall pending
  492.         11 installed
  493.  2,3    00 active
  494.         01 Continue pending
  495.         10 Pause pending
  496.         11 paused
  497.  4    uninstallable
  498.  5    pausable
  499.  8    disk redirector paused
  500.  9    spooled device redirector paused (printing)
  501.  10    communication device redirector paused
  502.  
  503. (Table 1363)
  504. Values for LAN Manager status code:
  505.  high word
  506.     3051 Bad parameter value
  507.     3052 A parameter is missing
  508.     3053 An unknown parameter was specified
  509.     3054 The resource is insufficient
  510.     3055 Configuration is faulty
  511.     3056 An MS-DOS or MS OS/2 error occured
  512.     3057 An internal error occured
  513.     3058 An ambiguous parameter name was given
  514.     3059 A duplicate parameter exists
  515.     3060 The service was terminated by NetSeviceControl when it did not respond
  516.     3061 The service program file could not be executed
  517.     3062 The subservice failed to start
  518.     3063 There is a conflict in the value or use of these parameters
  519.     3064 There is a problem with the file
  520.  low word
  521.     3070 There is insufficient memory
  522.     3071 There is insufficeient disk space
  523.     3072 Unable to create thread
  524.     3073 Unable to create process
  525.     3074 A security failure occured
  526.     3075 There is bad or missing default path
  527.     3076 Network software is not installed
  528.     3077 Server software is not installed
  529.     3078 The server could not access the UAS database
  530.     3079 The action requires user-level security
  531.     3080 The log directory is invalid
  532.     3081 The LAN group specificed could not be used
  533.     3082 The computername is being used as a message alias on another computer
  534.     3083 The workstation failed to announce the servername
  535.     3084 The user accounts system is not configured properly
  536. --------N-215F42-----------------------------
  537. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceControl
  538.     AX = 5F42h
  539.     DH = opcode
  540.         00h interrogate status
  541.         01h pause
  542.         02h continue
  543.         03h uninstall
  544.     DL = argument
  545.         01h disk resource
  546.         02h print resource
  547.         04h communications resource (not implemented for DOS)
  548.     ES:BX -> NetServiceControl parameter structure (see #1364)
  549. Return: CF clear if successful
  550.     CF set on error
  551.         AX = error code
  552.  
  553. Format of LAN Manager NetServiceControl parameter structure:
  554. Offset    Size    Description    (Table 1364)
  555.  00h    DWORD    -> service name
  556.  04h    WORD    result buffer size
  557.  06h    DWORD    -> result buffer as service_info_2 structure
  558. --------N-215F43-----------------------------
  559. INT 21 u - LAN Manager Enhanced DOS - LOCAL DosPrintJobGetId
  560.     AX = 5F43h
  561.     BX = handle of remote print job
  562.     CX = size of PRIDINFO struture
  563.     ES:DI -> PRIDINFO structure (see #1365)
  564. Return: CF clear if successful
  565.         PRIDINFO filled in
  566.     CF set on error
  567.         AX = error code
  568.  
  569. Format of LAN Manager PRIDINFO structure:
  570. Offset    Size    Description    (Table 1365)
  571.  00h    WORD    job id
  572.  02h 16 BYTEs    server name
  573.  12h 13 BYTEs    queue name
  574.  1Fh  1 BYTE    pad
  575. --------N-215F44-----------------------------
  576. INT 21 - LAN Manager Enhanced DOS - LOCAL NetWkstaGetInfo
  577.     AX = 5F44h
  578.     BX = information level (00h, 01h, or 0Ah)
  579.     CX = buffer size
  580.     DX = 0000h
  581.     ES:DI -> buffer in which to store info (see #1366,#1367,#1368),
  582.           including any returned strings
  583. Return: AX = error code
  584.     DX = amount of buffer required, unchanged if supplied buffer large
  585.           enough to hold data
  586. SeeAlso: AX=5F45h,AX=5F49h
  587.  
  588. Format of LAN Manager wksta_info_0 structure:
  589. Offset    Size    Description    (Table 1366)
  590.  00h    WORD     reserved (0)
  591.  02h    DWORD     reserved (0)
  592.  06h    DWORD     -> path to computer's LANMAN directory
  593.  0Ah    DWORD     -> computername of the workstation
  594.  0Eh    DWORD     -> username of user logged onto workstation
  595.  12h    DWORD     -> domain to which workstation belongs
  596.  16h    WORD     LAN Manager version number (2 bytes, Major, Minor)
  597.  18h    DWORD     reserved (0)
  598.  1Ch    WORD     number of seconds workstation waits for resource availability
  599.  1Eh    DWORD     delay (in millsecs) before sending data to resource
  600.  22h    WORD     reserved (0)
  601.  24h    WORD     reserved (0)
  602.  26h    WORD     ???
  603.  28h    WORD     number of seconds to maintain an inactive connection
  604.  2Ah    WORD     number of seconds an inactive search continues
  605.  2Ch    WORD     threads to dedicate to network (not supported in MSDOS)
  606.  2Eh    WORD     number of simultaneous commands sent to network
  607.  30h    WORD     reserved6 (must be 0)
  608.  32h    WORD     number of internal buffers
  609.  34h    WORD     size (in bytes) of each internal buffer
  610.  36h    WORD     max size (in bytes) of an internal cache buffer (not MSDOS)
  611.  38h    WORD     seconds before disconnecting inactive session (not MSDOS)
  612.  3Ah    WORD     size (in bytes) of an internal error buffer (not MSDOS)
  613.  3Ch    WORD     number of clients that can receive alert messages (not MSDOS)
  614.  3Eh    WORD     number of services that can be started on workstation
  615.  40h    WORD     max size (in kilobytes) of error log (not MSDOS)
  616.  42h    WORD     number of secs before closing inactive print jobs (not MSDOS)
  617.  44h    WORD     number of character buffers for workstation
  618.  46h    WORD     max size (in bytes) of character buffer
  619.  48h    DWORD     -> name of server that validated logon
  620.  4Ch    DWORD     -> workstation heuristics
  621.  50h    WORD     number of mailslots allowed
  622. Note:    pointers to strings are set to 0000h:0000h if there is insufficient
  623.       space in the buffer to hold them
  624. SeeAlso: #1367,#1368
  625.  
  626. Format of LAN Manager wksta_info_1 structure:
  627. Offset    Size    Description    (Table 1367)
  628.  00h 82 BYTEs    wksta_info_0 structure (see #1366)
  629.  52h    DWORD     -> name of domain which user is logged on to
  630.  56h    DWORD     -> all domains in which computer is enlisted
  631.  5Ah    WORD     number of buffers to allocate for receiving datagrams
  632. SeeAlso: #1368
  633.  
  634. Format of LAN Manager wksta_info_10 structure:
  635. Offset    Size    Description    (Table 1368)
  636.  00h    DWORD     -> computername of the workstation
  637.  04h    DWORD     -> username of user logged onto workstation
  638.  08h    DWORD     -> domain to which workstation belongs
  639.  0Ch    WORD     LAN Manager version number (2 bytes, Major, Minor)
  640.  0Eh    DWORD     -> name of domain which user is loggod on to
  641.  12h    DWORD     -> all domains in which computer is enlisted
  642. Note:    pointers to strings are set to 0000h:0000h if there is insufficient
  643.       space in the buffer to hold them
  644. SeeAlso: #1366,#1367
  645. --------N-215F45-----------------------------
  646. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetWkstaSetInfo
  647.     AX = 5F45h
  648.     BX = level (0000h or 0001h)
  649.     CX = buffer size
  650.     DX = parameter to set
  651.     ES:DI -> buffer
  652. Return: CF clear if successful
  653.     CF set if error
  654.         AX = error code
  655. SeeAlso: AX=5F44h
  656. --------N-215F46-----------------------------
  657. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseEnum
  658.     AX = 5F46h
  659.     BX = level (0000h or 0001h)
  660.     CX = size of buffer
  661.     ES:DI -> buffer of use_info_0 or use_info_1 structures
  662.           (see #1369,#1370)
  663. Return: CF clear if successful
  664.         CX = entries read
  665.         DX = total available entries
  666.     CF set if error
  667.         AX = error code
  668. SeeAlso: AX=5F47h,AX=5F48h,AX=5F4Ch
  669.  
  670. Format of LAN Manager use_info_0 structure:
  671. Offset    Size    Description    (Table 1369)
  672.  00h  9 BYTEs    local device name
  673.  09h    BYTE    padding
  674.  0Ah    DWORD    -> remote device name in UNC form \\server\share
  675. SeeAlso: #1370
  676.  
  677. Format of LAN Manager use_info_1 structure:
  678. Offset    Size    Description    (Table 1370)
  679.  00h  9 BYTEs    Local device name
  680.  09h    BYTE    padding
  681.  0Ah    DWORD    -> remote device name in UNC form \\server\share
  682.  0Eh    DWORD    -> password
  683.  12h    WORD    network link status
  684.         (00h OK, 02h disconnected, else unsure)
  685.  14h    WORD    use type (-1 wildcard, 0 disk, 1 print, 2 com, 3 ipc)
  686.  16h    WORD    ignored
  687.  18h    WORD    ignored
  688. SeeAlso: #1369
  689. --------N-215F47-----------------------------
  690. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseAdd
  691.     AX = 5F47h
  692.     BX = level (0001h)
  693.     CX = size of use_info_1 structure
  694.     ES:DI -> use_info_1 structure (see #1370)
  695. Return: CF clear on success
  696.     CF set on error
  697.         AX = error code
  698. SeeAlso: AX=5F46h,AX=5F48h
  699. --------N-215F48-----------------------------
  700. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseDel
  701.     AX = 5F48h
  702.     BX = force level
  703.         0000h no force
  704.         0001h force
  705.         0002h lots of force
  706.     ES:DI -> buffer as either the local device name or UNC remote name
  707. Return: CF clear on success
  708.     CF set on error
  709.         AX = error code
  710. SeeAlso: AX=5F46h,AX=5F48h,AX=5F49h
  711. --------N-215F49-----------------------------
  712. INT 21 u - LAN Manager Enhanced DOS - NetUseGetInfo
  713.     AX = 5F49h
  714.     DS:DX -> NetUseGetInfo parameter structure (see #1371)
  715. Return: CF clear on success
  716.         DX = total available
  717.     CF set on error
  718.         AX = error code
  719. SeeAlso: AX=5F44h,AX=5F47h
  720.  
  721. Format of LAN Manager NetUseGetInfo parameter structure:
  722. Offset    Size    Description    (Table 1371)
  723.  00h    DWORD    pointer to either the local device name or UNC remote name
  724.  04h    WORD    level of information (0000h or 0001h)
  725.  06h    DWORD    pointer to buffer of use_info_0 or use_info_1 structures
  726.  0Ah    WORD    length of buffer
  727. --------N-215F4A-----------------------------
  728. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteCopy
  729.     AX = 5F4Ah
  730.     DS:DX -> NetRemoteCopy parameter structure (see #1372)
  731. Return: CF clear if successful
  732.     CF set on error
  733.         AX = error code
  734. SeeAlso: AX=5F4Bh
  735.  
  736. Format of LAN Manager NetRemoteCopy parameter structure:
  737. Offset    Size    Description    (Table 1372)
  738.  00h    DWORD    -> source name as UNC
  739.  04h    DWORD    -> destination name as UNC
  740.  08h    DWORD    -> source password
  741.  0Ch    DWORD    -> destination password
  742.  10h    WORD    destination open bitmap
  743.         if destination path exists
  744.             0000h open fails
  745.             0001h file is appended
  746.             0002h file is overwritten
  747.         if destination path doesn't exist
  748.             0000h open fails
  749.             0010h file is created
  750.  12h    WORD    copy control bitmap (see #1373)
  751.  14h    DWORD    -> copy_info buffer
  752.  18h    WORD    length of copy_info buffer
  753.  
  754. Bitfields for LAN Manager copy control:
  755. Bit(s)    Description    (Table 1373)
  756.  0    destination must be a file
  757.  1    destination must be a directory
  758.  2    destination is opened in ascii mode instead of binary
  759.  3    source is opened in ascii mode instead of binary
  760.  4    verify all write operations
  761. --------N-215F4B-----------------------------
  762. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteMove
  763.     AX = 5F4Bh
  764.     DS:DX -> NetRemoteMove parameter structure (see #1374)
  765. Return: CF clear if successful
  766.     CF set on error
  767.         AX = error code
  768. SeeAlso: AX=5F4Ah
  769.  
  770. Format of LAN Manager NetRemoteMove parameter structure:
  771. Offset    Size    Description    (Table 1374)
  772.  00h    DWORD    -> source name as UNC
  773.  04h    DWORD    -> destination name as UNC
  774.  08h    DWORD    -> source password
  775.  0Ch    DWORD    -> destination password
  776.  10h    WORD    destination open bitmap
  777.         if destination path exists
  778.             0000h open fails
  779.             0001h file is appended
  780.             0002h file is overwritten
  781.         if destination path doesn't exist
  782.             0000h open fails
  783.             0010h file is created
  784.  12h    WORD    move control bitmap
  785.             0001h destination must be a file
  786.             0002h destination must be a directory
  787.  14h    DWORD    -> move_info buffer
  788.  18h    WORD    length of move_info buffer
  789. --------N-215F4C-----------------------------
  790. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServerEnum
  791.     AX = 5F4Ch
  792.     BX = level (0000h or 0001h)
  793.     CX = buffer length
  794.     ES:DI -> buffer in which to store information
  795. Return: CF clear if successful
  796.         ES:DI -> server_info_X structures (depending on level)
  797.           (see #1375,#1376)
  798.         BX = entries read
  799.         CX = total entries available
  800.     CF set on error
  801.         AX = error code
  802. Notes:    this function is also supported by the Novell DOS Named Pipe Extender
  803.     this function has been obseleted by NetServerEnum2
  804. SeeAlso: AX=5F53h
  805.  
  806. Format of LAN Manager server_info_0 structure:
  807. Offset    Size    Description    (Table 1375)
  808.  00h 16 BYTEs    name
  809. SeeAlso: #1376
  810.  
  811. Format of LAN Manager server_info_1 structure:
  812. Offset    Size    Description    (Table 1376)
  813.  00h 16 BYTEs    name
  814.  10h    BYTE    major version in lower nibble
  815.  11h    BYTE    minor version
  816.  12h    DWORD    server type bitmask (see #1377)
  817.  16h    DWORD    -> comment string
  818. SeeAlso: #1375
  819.  
  820. Bitfields for LAN Manager server type:
  821. Bit(s)    Description    (Table 1377)
  822.  0    workstation
  823.  1    server
  824.  2    SQL server
  825.  3    primary domain controller
  826.  4    backup domain controller
  827.  5    time server
  828.  6    Apple File Protocol (AFP) server
  829.  7    Novell server
  830.  8    Domain Member (v2.1+)
  831.  9    Print Queue server (v2.1+)
  832.  10    Dialin server (v2.1+)
  833.  11    Unix server (v2.1+)
  834. --------N-215F4D-----------------------------
  835. INT 21 u - LAN Manager Enhanced DOS - DosMakeMailslot
  836.     AX = 5F4Dh
  837.     BX = message size
  838.     CX = mailslot size (must be bigger than message size by at least 1)
  839.                (minimum 1000h, maximum FFF6h)
  840.                (buffer must be 9 bytes bigger than this)
  841.     DS:SI -> name
  842.     ES:DI -> memory buffer
  843. Return: CF clear if successful
  844.         AX = handle
  845.     CF set on error
  846.         AX = error code
  847. SeeAlso: AX=5F4Eh,AX=5F4Fh,AX=5F50h,AX=5F51h
  848. --------N-215F4E-----------------------------
  849. INT 21 u - LAN Manager Enhanced DOS - DosDeleteMailslot
  850.     AX = 5F4Eh
  851.     BX = handle
  852. Return: CF clear if successful
  853.         ES:DI -> memory to be freed (allocated during DosMakeMailslot)
  854.     CF set on error
  855.         AX = error code
  856. SeeAlso: AX=5F4Dh,AX=5F4Fh
  857. --------N-215F4F-----------------------------
  858. INT 21 u - LAN Manager Enhanced DOS - DosMailslotInfo
  859.     AX = 5F4Fh
  860.     BX = handle
  861. Return: CF clear if successful
  862.         AX = max message size
  863.         BX = mailslot size
  864.         CX = next message size
  865.         DX = next message priority
  866.         SI = number of messages waiting
  867.     CF set on error
  868.         AX = error code
  869. SeeAlso: AX=5F4Dh,AX=5F4Eh,AX=5F50h
  870. --------N-215F50-----------------------------
  871. INT 21 u - LAN Manager Enhanced DOS - DosReadMailslot
  872.     AX = 5F50h
  873.     BX = handle
  874.     DX:CX = timeout
  875.     ES:DI -> buffer
  876. Return: CF clear if successful
  877.         AX = bytes read
  878.         CX = next item's size
  879.         DX = next item's priority
  880.     CF set on error
  881.         AX = error code
  882. SeeAlso: AX=5F4Dh,AX=5F4Fh,AX=5F51h,AX=5F52h
  883. --------N-215F51-----------------------------
  884. INT 21 u - LAN Manager Enhanced DOS - DosPeekMailslot
  885.     AX = 5F51h
  886.     BX = handle
  887.     ES:DI -> buffer
  888. Return: CF clear if successful
  889.         AX = bytes read
  890.         CX = next item's size
  891.         DX = next item's priority
  892.     CF set on error
  893.         AX = error code
  894. SeeAlso: AX=5F35h,AX=5F4Fh,AX=5F50h,AX=5F52h
  895. --------N-215F52-----------------------------
  896. INT 21 u - LAN Manager Enhanced DOS - DosWriteMailslot
  897.     AX = 5F52h
  898.     BX = class
  899.     CX = length of buffer
  900.     DX = priority
  901.     ES:DI -> DosWriteMailslot parameter structure (see #1378)
  902.     DS:SI -> mailslot name
  903. Return: CF clear if successful
  904.     CF set on error
  905.         AX = error code
  906. SeeAlso: AX=5F4Fh,AX=5F50h,AX=5F51h
  907.  
  908. Format of LAN Manager DosWriteMailslot parameter structure:
  909. Offset    Size    Description    (Table 1378)
  910.  00h    DWORD    timeout
  911.  04h    DWORD    -> buffer
  912. --------N-215F53-----------------------------
  913. INT 21 u - LAN Manager Enhanced DOS - NetServerEnum2
  914.     AX = 5F53h
  915.     DS:SI -> NetServerEnum2 parameter structure (see #1379)
  916. Return: CF clear if successful
  917.         BX = entries read
  918.         CX = total entries available
  919.     CF set on error
  920.         AX = error code
  921. SeeAlso: AX=5F4Ch
  922.  
  923. Format of LAN Manager NetServerEnum2 parameter structure:
  924. Offset    Size    Description    (Table 1379)
  925.  00h    WORD    level (0000h or 0001h)
  926.  02h    DWORD    -> buffer as array of server_info_??? structures (see #1381)
  927.  06h    WORD    length of buffer
  928.  08h    DWORD    server type bitmask (see #1380)
  929.  0Ch    DWORD    -> Domain name (may be 0000h:0000h for all local domains)
  930.  
  931. Bitfields for LAN Manager server type:
  932. Bit(s)    Description    (Table 1380)
  933.  0    workstation
  934.  1    server
  935.  2    SQL server
  936.  3    primary domain controller
  937.  4    backup domain controller
  938.  5    time server
  939.  6    Apple File Protocol (AFP) server
  940.  7    Novell server
  941.  8    Domain Member (v2.1+)
  942.  9    Print Queue server (v2.1+)
  943.  10    Dialin server (v2.1+)
  944.  11    Unix server (v2.1+)
  945. Note:    set all (FFFFFFFFh) for All Types
  946.  
  947. Format of LAN Manager server_info_0 structure:
  948. Offset    Size    Description    (Table 1381)
  949.  00h 16 BYTEs    name
  950. SeeAlso: #1382
  951.  
  952. Format of LAN Manager server_info_1 structure:
  953. Offset    Size    Description    (Table 1382)
  954.  00h 16 BYTEs    name
  955.  10h    BYTE    major version in lower nibble
  956.  11h    BYTE    minor version
  957.  12h    DWORD    server type (bits 0-11) (see #1380)
  958.  16h    DWORD    -> comment string
  959. SeeAlso: #1381
  960. --------N-215F55----------------------------
  961. INT 21 U - LAN Manager Enhanced DOS - KILL ALL CONNECTIONS???
  962.     AX = 5F55h
  963.     BX = ???
  964. Return: CF clear if successful
  965.     CF set on error
  966.         AX = error code
  967. --------N-215F80-----------------------------
  968. INT 21 - LANtastic - GET LOGIN ENTRY
  969.     AX = 5F80h
  970.     BX = login entry index (0-based)
  971.     ES:DI -> 16-byte buffer for machine name
  972. Return: CF clear if successful
  973.         buffer filled with machine name ("\\" prefix removed)
  974.         DL = adapter number (v3+)
  975.     CF set on error
  976.         AX = error code
  977. Note:    the login entry index corresponds to the value BX used in AX=5F83h
  978. SeeAlso: AX=5F83h
  979. --------N-215F81-----------------------------
  980. INT 21 - LANtastic - LOGIN TO SERVER
  981.     AX = 5F81h
  982.     ES:DI -> ASCIZ login path followed immediately by ASCIZ password
  983.     BL = adapter number
  984.         FFh try all valid adapters
  985.         00h-07h try only specified adapter
  986. Return: CF clear if successful
  987.     CF set on error
  988.         AX = error code
  989. Notes:    login path is of form "\\machine\username"
  990.     if no password is used, the string at ES:DI must be terminated with
  991.       three NULs for compatibility with LANtastic v3.0.
  992. SeeAlso: AX=5F82h,AX=5F84h
  993. --------N-215F82-----------------------------
  994. INT 21 - LANtastic - LOGOUT FROM SERVER
  995.     AX = 5F82h
  996.     ES:DI -> ASCIZ server name (in form "\\machine")
  997. Return: CF clear if successful
  998.     CF set on error
  999.         AX = error code
  1000. SeeAlso: AX=5F81h,AX=5F88h,AX=5FCBh
  1001. --------N-215F83-----------------------------
  1002. INT 21 - LANtastic - GET USERNAME ENTRY
  1003.     AX = 5F83h
  1004.     BX = login entry index (0-based)
  1005.     ES:DI -> 16-byte buffer for username currently logged into
  1006. Return: CF clear if successful
  1007.         DL = adapter number (v3+)
  1008.     CF set on error
  1009.         AX = error code
  1010. Note:    the login entry index corresponds to the value BX used in AX=5F80h
  1011. SeeAlso: AX=5F80h
  1012. --------N-215F84-----------------------------
  1013. INT 21 - LANtastic - GET INACTIVE SERVER ENTRY
  1014.     AX = 5F84h
  1015.     BX = server index not currently logged into
  1016.     ES:DI -> 16-byte buffer for server name which is available for logging
  1017.         in to ("\\" prefix omitted)
  1018. Return: CF clear if successful
  1019.         DL = adapter number to non-logged in server is on
  1020.     CF set on error
  1021.         AX = error code
  1022. SeeAlso: AX=5F81h
  1023. --------N-215F85-----------------------------
  1024. INT 21 - LANtastic - CHANGE PASSWORD
  1025.     AX = 5F85h
  1026.     ES:DI -> buffer containing "\\machine\oldpassword" 00h "newpassword"00h
  1027. Return: CF clear if successful
  1028.     CF set on error
  1029.         AX = error code
  1030. Notes:    must be logged into the named machine
  1031.     this function is illegal for group accounts
  1032. --------N-215F86-----------------------------
  1033. INT 21 - LANtastic - DISABLE ACCOUNT
  1034.     AX = 5F86h
  1035.     ES:DI -> ASCIZ machine name and password in form "\\machine\password"
  1036. Return: CF clear if successful
  1037.     CF set on error
  1038.         AX = error code
  1039. Note:    must be logged into the named machine and concurrent logins set to 1
  1040.       by NET_MGR.  Requires system manager to re-enable account.
  1041. --------N-215F87-----------------------------
  1042. INT 21 - LANtastic v3+ - GET ACCOUNT
  1043.     AX = 5F87h
  1044.     DS:SI -> 128-byte buffer for account information (see #1383)
  1045.     ES:DI -> ASCIZ machine name in form "\\machine"
  1046. Return: CF clear if successful
  1047.     CF set on error
  1048.         AX = error code
  1049.     BX destroyed
  1050. Note:    must be logged into the specified machine
  1051.  
  1052. Format of LANtastic user account structure:
  1053. Offset    Size    Description    (Table 1383)
  1054.  00h 16 BYTEs    blank-padded username (zero-padded for v4.x)
  1055.  10h 16 BYTEs    reserved (00h)
  1056.  20h 32 BYTEs    user description
  1057.  40h    BYTE    privilege bits (see #1384)
  1058.  41h    BYTE    maximum concurrent users
  1059.  42h 42 BYTEs    bit map for disallowed half hours, beginning on Sunday
  1060.         (bit set if half-hour not an allowed time)
  1061.  6Ch    WORD    internal (0002h)
  1062.  6Eh  2 WORDs    last login time
  1063.  72h  2 WORDs    account expiration date (MS-DOS-format year/month:day)
  1064.  76h  2 WORDs    password expiration date (0 = none)
  1065.  7Ah    BYTE    number of days to extend password after change (1-31)
  1066.         00h if no extension required
  1067. ---v3.x---
  1068.  7Bh  5 BYTEs    reserved
  1069. ---v4.x---
  1070.  7Bh    BYTE    storage for first letter of user name when deleted (first
  1071.           character is changed to 00h when deleting account)
  1072.  7Ch    BYTE    extended privileges
  1073.  7Dh  3 BYTEs    reserved
  1074.  
  1075. Bitfields for LANtastic privilege bits:
  1076. Bit(s)    Description    (Table 1384)
  1077.  7    bypass access control lists
  1078.  6    bypass queue protection
  1079.  5    treat as local process
  1080.  4    bypass mail protection
  1081.  3    allow audit entry creation
  1082.  2    system manager
  1083.  0    user cannot change password
  1084. --------N-215F88-----------------------------
  1085. INT 21 - LANtastic v4.0+ - LOGOUT FROM ALL SERVERS
  1086.     AX = 5F88h
  1087. Return: CF clear if successful
  1088.     CF set on error
  1089.         AX = error code
  1090. SeeAlso: AX=5F82h
  1091. --------N-215F97-----------------------------
  1092. INT 21 - LANtastic - COPY FILE
  1093.     AX = 5F97h
  1094.     CX:DX = number of bytes to copy (FFFFFFFFh = entire file)
  1095.     SI = source file handle
  1096.     DI = destination file handle
  1097. Return: CF clear if successful
  1098.         DX:AX = number of bytes copied
  1099.     CF set on error
  1100.         AX = error code
  1101. Note:    copy is performed by server
  1102. --------N-215F98-----------------------------
  1103. INT 21 - LANtastic - SEND UNSOLICITED MESSAGE
  1104.     AX = 5F98h
  1105.     DS:SI -> message buffer (see #1385)
  1106. Return: CF clear if successful
  1107.     CF set on error
  1108.         AX = error code
  1109. Note:    v4.1- return no errors
  1110. SeeAlso: AX=5F99h
  1111.  
  1112. Format of LANtastic message buffer:
  1113. Offset    Size    Description    (Table 1385)
  1114.  00h    BYTE    reserved
  1115.  01h    BYTE    message type
  1116.         00h general
  1117.         01h server warning
  1118.         02h-7Fh reserved
  1119.         80h-FFh user-defined
  1120.  02h 16 BYTEs    ASCIZ destination machine name
  1121.  12h 16 BYTEs    ASCIZ server name which user must be logged into
  1122.  22h 16 BYTEs    ASCIZ user name
  1123.  32h 16 BYTEs    ASCIZ originating machine name (filled in when received)
  1124.  42h 80 BYTEs    message text
  1125. --------N-215F99-----------------------------
  1126. INT 21 - LANtastic - GET LAST RECEIVED UNSOLICITED MESSAGE
  1127.     AX = 5F99h
  1128.     ES:DI -> messsage buffer (see #1385)
  1129. Return: CF clear if successful
  1130.     CF set on error
  1131.         AX = error code
  1132. SeeAlso: AX=5F98h
  1133. --------N-215F9A-----------------------------
  1134. INT 21 - LANtastic - GET MESSAGE PROCESSING FLAGS
  1135.     AX = 5F9Ah
  1136. Return: CF clear if successful
  1137.         DL = bits describing processing of received messages (see #1386)
  1138.     CF set on error
  1139.         AX = error code
  1140. SeeAlso: AX=5F9Bh,AX=5F9Ch,AX=5F9Dh
  1141.  
  1142. Bitfields for unsolicited message processing flags:
  1143. Bit(s)    Description    (Table 1386)
  1144.  0    beep before message is delivered
  1145.  1    deliver message to message service
  1146.  2    pop up message automatically (v3+)
  1147. --------N-215F9B-----------------------------
  1148. INT 21 - LANtastic - SET MESSAGE PROCESSING FLAGS
  1149.     AX = 5F9Bh
  1150.     DL = bits describing processing for received unsolicited messages
  1151.          (see #1386)
  1152. Return: CF clear if successful
  1153.     CF set on error
  1154.         AX = error code
  1155. SeeAlso: AX=5F9Ah,AX=5F9Eh
  1156. --------N-215F9C-----------------------------
  1157. INT 21 - LANtastic v3+ - POP UP LAST RECEIVED MESSAGE
  1158.     AX = 5F9Ch
  1159.     CX = time to leave on screen in clock ticks
  1160.     DH = 0-based screen line on which to place message
  1161. Return: CF clear if successful
  1162.     CF set on error
  1163.         AX = error code (0Bh)
  1164. Notes:    the original screen contents are restored when the message is removed
  1165.     the message will not appear, and an error will be returned, if the
  1166.       screen is in a graphics mode
  1167. SeeAlso: AX=5F9Ah
  1168. --------N-215F9D-----------------------------
  1169. INT 21 - LANtastic v4.1+ - GET REDIRECTOR CONTROL BITS
  1170.     AX = 5F9Dh
  1171. Return: DL = redirector control bits
  1172.         bit 7: set to notify on print job completion
  1173. SeeAlso: AX=5F9Ah,AX=5F9Eh
  1174. --------N-215F9E-----------------------------
  1175. INT 21 - LANtastic v4.1+ - SET REDIRECTOR CONTROL BITS
  1176.     AX = 5F9Eh
  1177.     DL = redirector control bits (see AX=5F9Dh)
  1178. Return: nothing
  1179. SeeAlso: AX=5F9Bh,AX=5F9Dh
  1180. --------N-215FA0-----------------------------
  1181. INT 21 - LANtastic - GET QUEUE ENTRY
  1182.     AX = 5FA0h
  1183.     BX = queue entry index (0000h is first entry)
  1184.     DS:SI -> buffer for queue entry (see #1387)
  1185.     ES:DI -> ASCIZ server name in form "\\name"
  1186. Return: CF clear if successful
  1187.     CF set on error
  1188.         AX = error code
  1189.     BX = entry index for next queue entry (BX-1 is current index)
  1190. SeeAlso: AX=5FA1h,AX=5FA2h
  1191.  
  1192. Format of LANtastic queue entry:
  1193. Offset    Size    Description    (Table 1387)
  1194.  00h    BYTE    status of entry (see #1388)
  1195.  01h    DWORD    size of spooled file
  1196.  05h    BYTE    type of entry (see #1389)
  1197.  06h    BYTE    output control (see #1390)
  1198.  07h    WORD    number of copies
  1199.  09h    DWORD    sequence number of queue entry
  1200.  0Dh 48 BYTEs    pathname of spooled file
  1201.  3Dh 16 BYTEs    user who spooled file
  1202.  4Dh 16 BYTEs    name of machine from which file was spooled
  1203.  5Dh    WORD    date file was spooled (see #1318 at AX=5700h)
  1204.  5Fh    WORD    time file was spooled (see #1317 at AX=5700h)
  1205.  61h 17 BYTEs    ASCIZ destination device or user name
  1206.  72h 48 BYTEs    comment field
  1207.  
  1208. (Table 1388)
  1209. Values for status of LANtastic queue entry:
  1210.  00h    empty
  1211.  01h    being updated
  1212.  02h    being held
  1213.  03h    waiting for despool
  1214.  04h    being despooled
  1215.  05h    canceled
  1216.  06h    spooled file could not be accessed
  1217.  07h    destination could not be accessed
  1218.  08h    rush job
  1219.  
  1220. (Table 1389)
  1221. Values for type of LANtastic queue entry:
  1222.  00h    printer queue file
  1223.  01h    message
  1224.  02h    local file
  1225.  03h    remote file
  1226.  04h    to remote modem
  1227.  05h    batch processor file
  1228.  
  1229. Bitfields for output control:
  1230. Bit(s)    Description    (Table 1390)
  1231.  6    don't delete (for mail)
  1232.  5    mail file contains voice mail (v3+)
  1233.  4    mail message has been read
  1234.  3    response has been requested for this mail
  1235. --------N-215FA1-----------------------------
  1236. INT 21 - LANtastic - SET QUEUE ENTRY
  1237.     AX = 5FA1h
  1238.     BX = handle of opened queue entry
  1239.     DS:SI -> queue entry (see #1387)
  1240. Return: CF clear if successful
  1241.     CF set on error
  1242.         AX = error code
  1243. Notes:    the only queue entry fields which may be changed are output control,
  1244.       number of copies, destination device, and comment
  1245.     the handle in BX is that from a create or open (INT 21/AH=3Ch,3Dh)
  1246.       call on the file "\\server\\@MAIL" or "\\server\@name" (for
  1247.       printer queue entries)
  1248. SeeAlso: AX=5FA0h,AX=5FA2h,AX=5FA9h
  1249. --------N-215FA2-----------------------------
  1250. INT 21 - LANtastic - CONTROL QUEUE
  1251.     AX = 5FA2h
  1252.     BL = control command
  1253.         00h start despooling (privileged)
  1254.         01h halt despooling (privileged)
  1255.         02h halt despooling at end of job (privileged)
  1256.         03h pause despooler at end of job (privileged)
  1257.         04h print single job (privileged)
  1258.         05h restart current job (privileged)
  1259.         06h cancel the current job
  1260.         07h hold queue entry
  1261.         08h release a held queue entry
  1262.         09h make queue entry a rushed job (privileged)
  1263.     CX:DX = sequence number to control (commands 06h-09h)
  1264.     DX = physical printer number (commands 00h-05h)
  1265.         00h-02h LPT1-LPT3
  1266.         03h,04h COM1,COM2
  1267.         other    all printers
  1268.     ES:DI -> ASCIZ server name in form "\\machine"
  1269. Return: CF clear if successful
  1270.     CF set on error
  1271.         AX = error code
  1272. --------N-215FA3-----------------------------
  1273. INT 21 - LANtastic v3+ - GET PRINTER STATUS
  1274.     AX = 5FA3h
  1275.     BX = physical printer number (00h-02h = LPT1-LPT3, 03h-04h = COM1-COM2)
  1276.     DS:SI -> buffer for printer status (see #1391)
  1277.     ES:DI -> ASCIZ server name in form "\\machine"
  1278. Return: CF clear if successful
  1279.     CF set on error
  1280.         AX = error code
  1281.     BX = next physical printer number
  1282. Note:    you must be logged in to the specified server
  1283.  
  1284. Format of LANtastic printer status:
  1285. Offset    Size    Description    (Table 1391)
  1286.  00h    BYTE    printer state (see #1392)
  1287.  01h    WORD    queue index of print job being despooled
  1288.         FFFFh if not despooling--ignore all following fields
  1289.  03h    WORD    actual characters per second being output
  1290.  05h    DWORD    number of characters actually output so far
  1291.  09h    DWORD    number of bytes read from spooled file so far
  1292.  0Dh    WORD    copies remaining to print
  1293.  
  1294. Bitfields for LANtastic printer state:
  1295. Bit(s)    Description    (Table 1392)
  1296.  7    printer paused
  1297.  0-6    0 printer disabled
  1298.     1 will stop at end of job
  1299.     2 print multiple jobs
  1300. --------N-215FA4-----------------------------
  1301. INT 21 - LANtastic v3+ - GET STREAM INFO
  1302.     AX = 5FA4h
  1303.     BX = 0-based stream index number
  1304.     DS:SI -> buffer for stream information (see #1393)
  1305.     ES:DI -> ASCIZ machine name in form "\\machine"
  1306. Return: CF clear if successful
  1307.     CF set on error
  1308.         AX = error code
  1309.     BX = next stream number
  1310. SeeAlso: AX=5FA5h
  1311.  
  1312. Format of LANtastic stream information:
  1313. Offset    Size    Description    (Table 1393)
  1314.  00h    BYTE    queueing of jobs for logical printer (0=disabled,other=enabled)
  1315.  01h 11 BYTEs    logical printer resource template (may contain ? wildcards)
  1316. --------N-215FA5-----------------------------
  1317. INT 21 - LANtastic v3+ - SET STREAM INFO
  1318.     AX = 5FA5h
  1319.     BX = 0-based stream index number
  1320.     DS:SI -> buffer containing stream information (see #1393)
  1321.     ES:DI -> ASCIZ machine name in form "\\machine"
  1322. Return: CF clear if successful
  1323.     CF set on error
  1324.         AX = error code
  1325. SeeAlso: AX=5FA4h
  1326. --------N-215FA7-----------------------------
  1327. INT 21 - LANtastic - CREATE USER AUDIT ENTRY
  1328.     AX = 5FA7h
  1329.     DS:DX -> ASCIZ reason code (max 8 bytes)
  1330.     DS:SI -> ASCIZ variable reason string (max 128 bytes)
  1331.     ES:DI -> ASCIZ machine name in form "\\machine"
  1332. Return: CF clear if successful
  1333.     CF set on error
  1334.         AX = error code
  1335. Note:    you must be logged in to the specified server and have the "U"
  1336.       privilege to execute this call
  1337. --------N-215FA9-----------------------------
  1338. INT 21 - LANtastic v4.1+ - SET EXTENDED QUEUE ENTRY
  1339.     AX = 5FA9h
  1340.     BX = handle of opened queue entry
  1341.     DS:SI -> queue entry (see #1387)
  1342. Return: CF clear if successful
  1343.     CF set on error
  1344.         AX = error code
  1345. Note:    functions exactly the same as AX=5FA1h except the spooled filename is
  1346.       also set.  This call supports direct despooling.
  1347. SeeAlso: AX=5FA1h
  1348. --------N-215FB0-----------------------------
  1349. INT 21 - LANtastic - GET ACTIVE USER INFORMATION
  1350.     AX = 5FB0h
  1351.     BX = server login entry index
  1352.     DS:SI -> buffer for active user entry (see #1394)
  1353.     ES:DI -> ASCIZ machine name in form "\\server"
  1354. Return: CF clear if successful
  1355.     CF set on error
  1356.         AX = error code
  1357.     BX = next login index
  1358. SeeAlso: AX=5FB2h
  1359.  
  1360. Format of LANtastic active user entry:
  1361. Offset    Size    Description    (Table 1394)
  1362.  00h    WORD    virtual circuit number
  1363.  02h    BYTE    login state (see #1395)
  1364.  03h    BYTE    last command issued (see #1396)
  1365.  04h  5 BYTEs    number of I/O bytes (40-bit unsigned number)
  1366.  09h  3 BYTEs    number of server requests (24-bit unsigned)
  1367.  0Ch 16 BYTEs    name of user who is logged in
  1368.  1Ch 16 BYTEs    name of remote logged in machine
  1369.  2Ch    BYTE    extended privileges (v4+???)
  1370.         bit 0: user cannot change his password
  1371.  2Dh    WORD    time left in minutes (0000h = unlimited) (v4+???)
  1372.  
  1373. Bitfields for login state:
  1374. Bit(s)    Description    (Table 1395)
  1375.  0    fully logged in
  1376.  1    remote program load login
  1377.  2    user has system manager privileges
  1378.  3    user can create audit entries
  1379.  4    bypass mail protection
  1380.  5    treat as local process
  1381.  6    bypass queue protection
  1382.  7    bypass access control lists
  1383.  
  1384. (Table 1396)
  1385. Values for last LANtastic command:
  1386.  00h    login
  1387.  01h    process termination
  1388.  02h    open file
  1389.  03h    close file
  1390.  04h    create file
  1391.  05h    create new file
  1392.  06h    create unique file
  1393.  07h    commit data to disk
  1394.  08h    read file
  1395.  09h    write file
  1396.  0Ah    delete file
  1397.  0Bh    set file attributes
  1398.  0Ch    lock byte range
  1399.  0Dh    unlock byte range
  1400.  0Eh    create subdirectory
  1401.  0Fh    remove subdirectory
  1402.  10h    rename file
  1403.  11h    find first matching file
  1404.  12h    find next matching file
  1405.  13h    get disk free space
  1406.  14h    get a queue entry
  1407.  15h    set a queue entry
  1408.  16h    control the queue
  1409.  17h    return login information
  1410.  18h    return link description
  1411.  19h    seek on file
  1412.  1Ah    get server's time
  1413.  1Bh    create audit entry
  1414.  1Ch    open file in multitude of modes
  1415.  1Dh    change password
  1416.  1Eh    disable account
  1417.  1Fh    local server file copy
  1418. ---v3+---
  1419.  20h    get username from account file
  1420.  21h    translate server's logical path
  1421.  22h    make indirect file
  1422.  23h    get indirect file contents
  1423.  24h    get physical printer status
  1424.  25h    get logical print stream info
  1425.  26h    set logical print stream info
  1426.  27h    get user's account record
  1427. ---v4+---
  1428.  28h    request server shutdown
  1429.  29h    cancel server shutdown
  1430.  2Ah    stuff server's keyboard
  1431.  2Bh    write then commit data to disk
  1432.  2Ch    set extended queue entry
  1433.  2Dh    terminate user from server
  1434.  2Eh    enable/disable logins
  1435.  2Fh    flush server caches
  1436.  30h    change username
  1437.  31h    get extended queue entry
  1438.     (same as get queue, but can return named fields blanked)
  1439. --------N-215FB1-----------------------------
  1440. INT 21 - LANtastic - GET SHARED DIRECTORY INFORMATION
  1441.     AX = 5FB1h
  1442.     DS:SI -> 64-byte buffer for link description
  1443.     ES:DI -> ASCIZ machine and shared directory name in form
  1444.          "\\machine\shared-resource"
  1445. Return: CF clear if successful
  1446.         CX = access control list privileges for requesting user (see #1397)
  1447.     CF set on error
  1448.         AX = error code
  1449.  
  1450. Bitfields for LANtastic access control list:
  1451. Bit(s)    Description    (Table 1397)
  1452.  4    (I) allow expansion of indirect files
  1453.  5    (A) allow attribute changing
  1454.  6    (P) allow physical access to device
  1455.  7    (E) allow program execution
  1456.  8    (N) allow file renaming
  1457.  9    (K) allow directory deletion
  1458.  10    (D) allow file deletion
  1459.  11    (L) allow file/directory lookups
  1460.  12    (M) allow directory creation
  1461.  13    (C) allow file creation
  1462.  14    (W) allow open for write and writing
  1463.  15    (R) allow open for read and reading
  1464. --------N-215FB2-----------------------------
  1465. INT 21 - LANtastic v3+ - GET USERNAME FROM ACCOUNT FILE
  1466.     AX = 5FB2h
  1467.     BX = username entry index (0 for first)
  1468.     DS:SI -> 16-byte buffer for username
  1469.     ES:DI -> ASCIZ server name in form "\\machine"
  1470. Return: CF clear if successful
  1471.     CF set on error
  1472.         AX = error code
  1473.     BX = next queue entry index
  1474. SeeAlso: AX=5FB0h
  1475. --------N-215FB3-----------------------------
  1476. INT 21 - LANtastic v3+ - TRANSLATE PATH
  1477.     AX = 5FB3h
  1478.     DS:SI -> 128-byte buffer for ASCIZ result
  1479.     ES:DI -> full ASCIZ path, including server name
  1480.     DX = types of translation to be performed
  1481.         bit 0: expand last component as indirect file
  1482.         bit 1: return actual path relative to server's physical disk
  1483. Return: CF clear if successful
  1484.     CF set on error
  1485.         AX = error code
  1486. Note:    always expands any indirect files along the path
  1487. SeeALso: AX=5FB4h,INT 21/AH=60h
  1488. --------N-215FB4-----------------------------
  1489. INT 21 - LANtastic v3+ - CREATE INDIRECT FILE
  1490.     AX = 5FB4h
  1491.     DS:SI -> 128-byte buffer containing ASCIZ contents of indirect file
  1492.     ES:DI -> full ASCIZ path of indirect file to create, incl machine name
  1493. Return: CF clear if successful
  1494.     CF set on error
  1495.         AX = error code
  1496. Note:    the contents of the indirect file may be any valid server-relative path
  1497. SeeAlso: AX=5FB3h,AX=5FB5h
  1498. --------N-215FB5-----------------------------
  1499. INT 21 - LANtastic v3+ - GET INDIRECT FILE CONTENTS
  1500.     AX = 5FB5h
  1501.     DS:SI -> 128-byte buffer for ASCIZ indirect file contents
  1502.     ES:DI -> full ASCIZ path of indirect file
  1503. Return: CF clear if successful
  1504.     CF set on error
  1505.         AX = error code
  1506. SeeAlso: AX=5FB4h
  1507. --------N-215FB6-----------------------------
  1508. INT 21 - LANtastic v4.1+ - SET AUTO-LOGIN DEFAULTS
  1509.     AX = 5FB6h
  1510.     ES:DI -> pointer to ASCIZ default user name, immediately followed by
  1511.         ASCIZ password
  1512.     BL = adapter number to use for default login attempt
  1513.         FFh try all valid adapters
  1514.         00h-05h try adapter 0-5 explicitly
  1515. Return: CF clear if successful
  1516.     CF set on error
  1517.         AX = error code
  1518. Notes:    call with ES:DI -> two nulls to disable auto-login
  1519. SeeAlso: AX=5FB7h
  1520. --------N-215FB7-----------------------------
  1521. INT 21 - LANtastic v4.1+ - GET AUTO-LOGIN DEFAULTS
  1522.     AX = 5FB7h
  1523.     ES:DI -> pointer to 16-byte buffer to store ASCIZ auto-login user name
  1524. Return: CF clear if successful
  1525.         DL = adapter number used for default login attempt
  1526.         FFh all valid adapters will be tried
  1527.         00h-05h specified adapter will be tried explicitly
  1528.     CF set on error
  1529.         AX = error code
  1530. SeeAlso: AX=5F81h,AX=5FB6h
  1531. --------N-215FC0-----------------------------
  1532. INT 21 - LANtastic - GET TIME FROM SERVER
  1533.     AX = 5FC0h
  1534.     DS:SI -> time block (see #1398)
  1535.     ES:DI -> ASCIZ server name to get time from
  1536. Return: CF clear if successful
  1537.     CF set on error
  1538.         AX = error code
  1539. SeeAlso: AH=E7h"Novell"
  1540.  
  1541. Format of LANtastic time block:
  1542. Offset    Size    Description    (Table 1398)
  1543.  00h    WORD    year
  1544.  02h    BYTE    day
  1545.  03h    BYTE    month
  1546.  04h    BYTE    minutes
  1547.  05h    BYTE    hour
  1548.  06h    BYTE    hundredths of second
  1549.  07h    BYTE    second
  1550. --------N-215FC8-----------------------------
  1551. INT 21 - LANtastic v4.0+ - SCHEDULE SERVER SHUTDOWN
  1552.     AX = 5FC8h
  1553.     ES:DI -> ASCIZ server name in form "\\machine"
  1554.     DS:SI -> ASCIZ reason string (80 characters)
  1555.     CX = number of minutes until shutdown (0 = immediate)
  1556.     DX = option flags (see #1399)
  1557. Return: CF clear if successful
  1558.     CF set on error
  1559.         AX = error code
  1560. SeeAlso: AX=5FC9h
  1561.  
  1562. Bitfields for LANtastic option flags:
  1563. Bit(s)    Description    (Table 1399)
  1564.  0    auto reboot
  1565.  1    do not notify users
  1566.  2    halt after shutdown
  1567.  3    shutdown due to power fail (used by UPS)
  1568.  4-7    reserved
  1569.  8-14    user definable
  1570.  15    reserved
  1571. --------N-215FC9-----------------------------
  1572. INT 21 - LANtastic v4.0+ - CANCEL SERVER SHUTDOWN
  1573.     AX = 5FC9h
  1574.     ES:DI -> ASCIZ server name in form "\\machine"
  1575. Return: CF clear if successful
  1576.     CF set on error
  1577.         AX = error code
  1578. Note:    you must have the "S" privilege to use this call
  1579. SeeAlso: AX=5FC8h
  1580. --------N-215FCA-----------------------------
  1581. INT 21 - LANtastic v4.0+ - STUFF SERVER KEYBOARD BUFFER
  1582.     AX = 5FCAh
  1583.     ES:DI -> ASCIZ server name in form "\\machine"
  1584.     DS:SI -> ASCIZ string to stuff (128 bytes)
  1585. Return: CF clear if successful
  1586.     CF set on error
  1587.         AX = error code
  1588. Note:    you must have the "S" privilege to use this call
  1589.     maximum number of characters that can be stuffed is determined by the
  1590.       server's RUN BUFFER SIZE.
  1591. SeeAlso: INT 16/AH=05h
  1592. --------N-215FCB-----------------------------
  1593. INT 21 - LANtastic v4.1+ - TERMINATE USER
  1594.     AX = 5FCBh
  1595.     ES:DI -> ASCIZ server name in form "\\machine"
  1596.     DS:SI -> blank-padded username.     A null char = wildcard.
  1597.     DS:DX -> blank-padded machine name.  A null char = wildcard.
  1598.     CX = minutes until termination (0 = immediate)
  1599. Return: CF clear if successful
  1600.     CF set on error
  1601.         AX = error code
  1602. Note:    you must have the "S" privilege to use this call
  1603.     you cannot log yourself out using this call
  1604. SeeAlso: AX=5F82h
  1605. --------N-215FCC-----------------------------
  1606. INT 21 - LANtastic v4.1+ - GET/SET SERVER CONTROL BITS
  1607.     AX = 5FCCh
  1608.     ES:DI -> ASCIZ server name in form "\\machine"
  1609.     CX = bit values (value of bits you want to set) (see #1400)
  1610.     DX = bit mask (bits you are interested in, 0 = get only) (see #1400)
  1611. Return: CF clear if successful
  1612.         CX = control bits after call (see #1400)
  1613.     CF set on error
  1614.         AX = error code
  1615. Note:    you must have the "S" privilege to SET, anyone can GET.
  1616.  
  1617. Bitfields for control bits:
  1618. Bit(s)    Description    (Table 1400)
  1619.  0    disable logins
  1620. --------N-215FCD-----------------------------
  1621. INT 21 - LANtastic v4.1+ - FLUSH SERVER CACHES
  1622.     AX = 5FCDh
  1623.     ES:DI -> ASCIZ server name in form "\\machine"
  1624. Return: CF clear if successful
  1625.     CF set on error
  1626.         AX = error code
  1627. Note:    you must have the "S" privilege to use this call.
  1628. --------N-215FD0-----------------------------
  1629. INT 21 - LANtastic - GET REDIRECTED PRINTER TIMEOUT
  1630.     AX = 5FD0h
  1631. Return: CF clear if successful
  1632.         CX = redirected printer timeout in clock ticks of 55ms
  1633.         0000h if timeout disabled
  1634.     CF set on error
  1635.         AX = error code
  1636. SeeAlso: AX=5FD1h
  1637. --------N-215FD1-----------------------------
  1638. INT 21 - LANtastic - SET REDIRECTED PRINTER TIMEOUT
  1639.     AX = 5FD1h
  1640.     CX = printer timeout in clock ticks of 55ms, 0000h to disable timeouts
  1641. Return: CF clear if successful
  1642.     CF set on error
  1643.         AX = error code
  1644. SeeAlso: AX=5FD0h
  1645. --------N-215FE0-----------------------------
  1646. INT 21 C - LANtastic - GET DOS SERVICE VECTOR
  1647.     AX = 5FE0h
  1648. Return: CF clear if successful
  1649.         ES:BX -> current FAR service routine
  1650.     CF set on error
  1651.         AX = error code
  1652. Note:    the service routine is called by the LANtastic redirector whenever DOS
  1653.       may safely be called, permitting external TSRs and drivers to hook
  1654.       into LANtastic's DOS busy flag checking
  1655. SeeAlso: AX=5FE1h,INT 28,INT 2A/AH=84h
  1656. --------N-215FE1-----------------------------
  1657. INT 21 - LANtastic - SET DOS SERVICE VECTOR
  1658.     AX = 5FE1h
  1659.     ES:BX -> FAR routine to call when DOS services are available
  1660. Return: CF clear if successful
  1661.     CF set on error
  1662.         AX = error code
  1663. Note:    new handler must chain to previous handler as its first action
  1664. SeeAlso: AX=5FE0h
  1665. --------N-215FE2-----------------------------
  1666. INT 21 - LANtastic - GET MESSAGE SERVICE VECTOR
  1667.     AX = 5FE2h
  1668. Return: CF clear if successful
  1669.         ES:BX -> current FAR message service routine
  1670.     CF set on error
  1671.         AX = error code
  1672. SeeAlso: AX=5FE0h,AX=5FE3h
  1673. --------N-215FE3-----------------------------
  1674. INT 21 - LANtastic - SET MESSAGE SERVICE VECTOR
  1675.     AX = 5FE3h
  1676.     ES:BX -> FAR routine for processing network messages
  1677. Return: CF clear if successful
  1678.     CF set on error
  1679.         AX = error code
  1680. Notes:    handler must chain to previous handler as its first action
  1681.     on invocation, ES:BX -> just-received message
  1682. SeeAlso: AX=5FE2h
  1683. --------D-2160-------------------------------
  1684. INT 21 - DOS 3.0+ - "TRUENAME" - CANONICALIZE FILENAME OR PATH
  1685.     AH = 60h
  1686.     DS:SI -> ASCIZ filename or path
  1687.     ES:DI -> 128-byte buffer for canonicalized name
  1688. Return: CF set on error
  1689.         AX = error code
  1690.         02h invalid component in directory path or drive letter only
  1691.         03h malformed path or invalid drive letter
  1692.         ES:DI buffer unchanged
  1693.     CF clear if successful
  1694.         AH = 00h or 3Ah (DOS 6.1/6.2 for character device)
  1695.         AL = destroyed (00h or 2Fh or 5Ch or last character of current
  1696.           directory on drive)
  1697.         buffer filled with qualified name of form D:\PATH\FILE.EXT or
  1698.           \\MACHINE\PATH\FILE.EXT
  1699. Desc:    determine the canonical name of the specified filename or path,
  1700.       corresponding to the undocumented TRUENAME command in COMMAND.COM
  1701. Notes:    the input path need not actually exist
  1702.     letters are uppercased, forward slashes converted to backslashes,
  1703.       asterisks converted to appropriate number of question marks, and
  1704.       file and directory names are truncated to 8.3 if necessary.  (DR DOS
  1705.       3.41 and 5.0 do not expand asterisks)
  1706.     '.' and '..' in the path are resolved
  1707.     filespecs on local drives always start with "d:", those on network
  1708.       drives always start with "\\"
  1709.     if path string is on a JOINed drive, the returned name is the one that
  1710.       would be needed if the drive were not JOINed; similarly for a
  1711.       SUBSTed, ASSIGNed, or network drive letter.    Because of this, it is
  1712.       possible to get a qualified name that is not legal under the current
  1713.       combination of SUBSTs, ASSIGNs, JOINs, and network redirections
  1714.     under DOS 3.3 through 6.00, a device name is translated differently if
  1715.       the device name does not have an explicit directory or the directory
  1716.       is \DEV (relative directory DEV from the root directory works
  1717.       correctly).  In these cases, the returned string consists of the
  1718.       unchanged device name and extension appended to the string X:/
  1719.       (forward slash instead of backward slash as in all other cases) where
  1720.       X is the default or explicit drive letter.
  1721.     under MS-DOS 7.0, this call returns the short name for any
  1722.       long-filename portions of the provided pathname or filename
  1723.     functions which take pathnames require canonical paths if invoked via
  1724.       INT 21/AX=5D00h
  1725.     supported by OS/2 v1.1 compatibility box
  1726.     NetWare 2.1x does not support characters with the high bit set; early
  1727.       versions of NetWare 386 support such characters except in this call.
  1728.       In addition, NetWare returns error code 3 for the path "X:\"; one
  1729.       should use "X:\." instead.
  1730.     Novell DOS 7 reportedly has difficulty with non-MS-DOS filenames on
  1731.       network drives, and can return "D:" instead of "SERVER/VOLUME"
  1732.     for DOS 3.3-6.0, the input and output buffers may be the same, as the
  1733.       canonicalized name is built in an internal buffer and copied to the
  1734.       specified output buffer as the very last step
  1735.     for DR DOS 6.0, this function is not automatically called when on a
  1736.       network.  Device drivers reportedly cannot make this call from their
  1737.       INIT function.  Using the same pointer for both input and output
  1738.       buffers is not supported in the April 1992 and earlier versions of
  1739.       DR DOS
  1740.     Windows for Workgroups 3.11, Windows95 and even MS-DOS 7.00 only
  1741.       return the local drive path; to obtain network paths use
  1742.       INT 21/AX=5F02h or INT 21/AX=5F46h instead
  1743.     Corel's CORELCDX and MSCDEX without the /S switch return canonical
  1744.       names of the form "\\D.\A.\path", where "D" is the CD-ROM drive
  1745.       letter and "A" appears to indicate the first physical CD-ROM drive;
  1746.       MSCDEX with the /S switch returns a canonical name with embedded
  1747.       blanks.  Novell DOS 7 NWCDEX as of the 11/16/94 update returns the
  1748.       same canonical path as MSCDEX; earlier revisions returned
  1749.       "Cdex.   D:\path", where "D" is the CD-ROM drive letter
  1750.     the Windows95 MSCDEX-replacement VxD returns "D:\path", even though the
  1751.       MS-DOS 7.00 MSCDEX behaves identically to older versions (above)
  1752. SeeAlso: AX=5F02h,AX=5FB3h,AX=7160h/CL=00h,INT 2F/AX=1123h,INT 2F/AX=1221h
  1753. --------D-2161-------------------------------
  1754. INT 21 - DOS 3.0+ - UNUSED (RESERVED FOR NETWORK USE)
  1755.     AH = 61h
  1756. Return: AL = 00h
  1757. Note:    this function does nothing and returns immediately
  1758. --------O-2161--BP6467-----------------------
  1759. INT 21 U - OS/2 v1.x FAPI - OS/2 FILE SYSTEM JOIN/SUBST
  1760.     AH = 61h
  1761.     BP = 6467h ("dg")
  1762.     AL = function
  1763.         00h list (i.e. get)
  1764.         01h add
  1765.         02h delete
  1766.     BX = drive number
  1767.     CX = size of buffer
  1768.     SI = type (0002h JOIN, 0003h SUBST)
  1769.     ES:DI -> buffer
  1770. Return: CF clear if successful
  1771.         AX = 0000h
  1772.         ES:DI buffer filled, if appropriate
  1773.     CF set on error
  1774.         AX = error code
  1775. Notes:    used by JOIN and SUBST to communicate with the OS/2 file system
  1776.     for function 00h (list), the ES:DI buffer is filled with the ASCIZ
  1777.       JOIN/SUBST path or an empty string if the drive is not JOINed/SUBSTed
  1778.     also supported by OS/2 v2.0+ Virtual DOS Machines
  1779. --------D-2162-------------------------------
  1780. INT 21 - DOS 3.0+ - GET CURRENT PSP ADDRESS
  1781.     AH = 62h
  1782. Return: BX = segment of PSP for current process
  1783. Notes:    this function does not use any of the DOS-internal stacks and may
  1784.       thus be called at any time, even during another INT 21h call
  1785.     the current PSP is not necessarily the caller's PSP
  1786.     identical to the undocumented AH=51h
  1787. SeeAlso: AH=50h,AH=51h
  1788. --------U-216262SI1994-----------------------
  1789. INT 21 - ENVLOCK - INSTALLATION CHECK
  1790.     AX = 6262h
  1791.     SI = 1994h
  1792. Return: AX = 1994h if installed
  1793.         ES = ENVLOCK's resident segment
  1794. Notes:    to deactivate ENVLOCK, zero out the byte at ES:[0102h]
  1795. Program: ENVLOCK is a TSR by Alexander Yanovsky (aka PC Hawk) that forces
  1796.       other TSRs to deallocate their environment when they stay resident
  1797. --------D-216300-----------------------------
  1798. INT 21 - DOS 2.25 only - GET LEAD BYTE TABLE ADDRESS
  1799.     AX = 6300h
  1800. Return: CF clear if successful
  1801.         DS:SI -> lead byte table (see #1401)
  1802.     CF set on error
  1803.         AX = error code (01h) (see #1332 at AH=59h/BX=0000h)
  1804. Notes:    does not preserve any registers other than SS:SP
  1805.     the US version of MS-DOS 3.30 treats this as an unused function,
  1806.       setting AL=00h and returning immediately
  1807. SeeAlso: AX=6301h,AH=07h,AH=08h,AH=0Bh
  1808.  
  1809. Format of double-byte character set lead byte table entry:
  1810. Offset    Size    Description    (Table 1401)
  1811.  00h  2 BYTEs    low/high ends of a range of leading byte of double-byte chars
  1812.  02h  2 BYTEs    low/high ends of a range of leading byte of double-byte chars
  1813.     ...
  1814.   N   2 BYTEs    00h,00h end flag
  1815. --------D-216300-----------------------------
  1816. INT 21 - DOS 3.2+ - GET DOUBLE BYTE CHARACTER SET LEAD-BYTE TABLE
  1817.     AX = 6300h
  1818. Return: AL = error code
  1819.         00h successful
  1820.         DS:SI -> DBCS table (see #1401)
  1821.         all other registers except CS:IP and SS:SP destroyed
  1822.         FFh not supported
  1823. Notes:    probably identical to AH=63h/AL=00h for DOS 2.25
  1824.     the US version of MS-DOS 3.30 treats this as an unused function,
  1825.       setting AL=00h and returning immediately, WITHOUT setting DS:SI;
  1826.       only the Far East versions of MS-DOS 3.2 and 3.3 supported this call
  1827.     the US version of DOS 4.0+ accepts this function, but returns an empty
  1828.       list
  1829.     IBM DOS 6.1 SYS.COM assumes that CF is set on error
  1830. SeeAlso: AX=6300h"DOS 2.25"
  1831. --------D-216301-----------------------------
  1832. INT 21 - DOS 2.25, DOS 3.2+ - SET KOREAN (HANGEUL) INPUT MODE
  1833.     AX = 6301h
  1834.     DL = new mode
  1835.         00h return only full characters on DOS keyboard input functions
  1836.         01h return partially-formed (interim) characters also
  1837. Return: AL = status
  1838.         00h successful
  1839.         FFh invalid mode
  1840. Notes:    Novell DOS 7 simply stores DL in the caller's PSP (see #1032 at AH=26h)
  1841.     the US version of MS-DOS 3.30 treats this as an unused function,
  1842.       setting AL=00h and returning immediately; only the Far East versions
  1843.       of MS-DOS 3.2 and 3.3 supported this call
  1844. SeeAlso: AH=07h,AH=08h,AH=0Bh,AX=6300h,AX=6302h
  1845. --------D-216302-----------------------------
  1846. INT 21 - DOS 2.25, DOS 3.2+ - GET KOREAN (HANGEUL) INPUT MODE
  1847.     AX = 6302h
  1848. Return: AL = status
  1849.         00h successful
  1850.         DL = current input mode
  1851.             00h return only full characters (clears interim flag)
  1852.             01h return partial characters (sets interim flag)
  1853.         FFh not supported
  1854. Notes:    Novell DOS 7 simply reads the value out of the caller's PSP, so it
  1855.       can return values other than 00h or 01h if the last call to AX=6301h
  1856.       used another value
  1857.     the US version of MS-DOS 3.30 treats this as an unused function,
  1858.       setting AL=00h and returning immediately, WITHOUT setting DL; only
  1859.       the Far East versions of MS-DOS 3.2 and 3.3 supported this call
  1860. SeeAlso: AH=07h,AH=08h,AH=0Bh,AX=6300h,AX=6301h
  1861. --------v-216303------------------------
  1862. INT 21 - VIRUS - "DOS IDLE" - INSTALLATION CHECK
  1863.     AX = 6303h
  1864. Return: BX = 6303h if resident
  1865. SeeAlso: AX=5643h"VIRUS",AX=6304h"VIRUS",AX=9AD5h"VIRUS"
  1866. --------v-216304------------------------
  1867. INT 21 - VIRUS - "Replicator" - INSTALLATION CHECK
  1868.     AX = 6304h
  1869. Return: BX = 6304h if resident
  1870. SeeAlso: AX=6303h"VIRUS",AX=6969h"VIRUS"
  1871. --------D-2164-------------------------------
  1872. INT 21 - DOS 3.2+ internal - SET DEVICE DRIVER LOOKAHEAD FLAG
  1873.     AH = 64h
  1874.     AL = flag
  1875.         00h (default) call device driver function 5 (non-dest read)
  1876.             before INT 21/AH=01h,08h,0Ah
  1877.         nonzero don't call driver function 5
  1878. Return: nothing (MS-DOS)
  1879.     CF set, AX=error code??? (DR DOS 5.0, which does not support this call)
  1880. Notes:    this function is called by the DOS 3.3+ PRINT.COM
  1881.     under MS-DOS, this function does not use any of the DOS-internal stacks
  1882.       and may thus be called at any time, even during another DOS call
  1883. SeeAlso: AH=01h,AH=08h,AH=0Ah,AX=5D06h
  1884. --------O-2164--DX0000-----------------------
  1885. INT 21 U - OS/2 v2.0+ Virtual DOS Machine - ENABLE AUTOMATIC TITLE SWITCH
  1886.     AH = 64h
  1887.     DX = 0000h (function number)
  1888.     CX = 636Ch (magic value, "cl")
  1889.     BX = 0000h (indicates special request)
  1890. Note:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1891.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1892. SeeAlso: AH=64h/DX=0001h,INT 21/AH=4Bh
  1893. --------O-2164--DX0001-----------------------
  1894. INT 21 U - OS/2 v2.0+ Virtual DOS Machine - SET SESSION TITLE
  1895.     AH = 64h
  1896.     DX = 0001h (function number)
  1897.     CX = 636Ch (magic value, "cl")
  1898.     BX = 0000h (indicates special request)
  1899.     ES:DI -> new ASCIZ title (max 12 char) or "" to restore default title
  1900. Note:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1901.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1902. SeeAlso: AH=64h/DX=0000h,AH=64h/DX=0002h,INT 15/AH=12h/BH=05h
  1903. --------O-2164--DX0002-----------------------
  1904. INT 21 U - OS/2 v2.0+ Virtual DOS Machine - GET SESSION TITLE
  1905.     AH = 64h
  1906.     DX = 0002h (function number)
  1907.     CX = 636Ch (magic value, "cl")
  1908.     BX = 0000h (indicates special request)
  1909.     ES:DI -> 13-byte buffer for current title
  1910. Return: buffer filled (single 00h if title never changed)
  1911. Note:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1912.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1913. SeeAlso: AH=64h/DX=0000h,AH=64h/DX=0001h,INT 15/AH=12h/BH=05h
  1914. --------O-2164--DX0003-----------------------
  1915. INT 21 U - OS/2 v2.1 Virtual DOS Machine - GET LASTDRIVE
  1916.     AH = 64h
  1917.     DX = 0003h (function number)
  1918.     CX = 636Ch (magic value, "cl")
  1919.     BX = 0000h (indicates special request)
  1920. Return: AL = highest drive supported
  1921. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1922.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1923.     used by WinOS2
  1924.     not supported by OS/2 Warp 3.0, check list of lists instead (see #1279)
  1925. SeeAlso: AH=52h
  1926. --------O-2164--DX0004-----------------------
  1927. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SIZE OF PTDA JFT
  1928.     AH = 64h
  1929.     DX = 0004h (function number)
  1930.     CX = 636Ch (magic value, "cl")
  1931.     BX = 0000h (indicates special request)
  1932. Return: AX = number of entries in OS/2 JFT for VDM
  1933. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1934.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1935.     in an OS/2 VDM, the DOS Job File Table in the PSP contains an index
  1936.       into the OS/2 JFT in the Per-Task Data Area rather than an SFT index
  1937.       because the OS/2 SFT can contain more than 255 entries
  1938. --------O-2164--DX0005-----------------------
  1939. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SECOND SFT FLAGS WORD
  1940.     AH = 64h
  1941.     DX = 0005h (function number)
  1942.     CX = 636Ch (magic value, "cl")
  1943.     BX = 0000h (indicates special request)
  1944.     DI = DOS file handle
  1945. Return: AX = value of second flags word from OS/2 SFT entry for file
  1946. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1947.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1948.     the OS/2 SFT has two flags words rather than DOS's one word, and this
  1949.       function provides access to the word which is not present in DOS
  1950. --------O-2164--DX0006-----------------------
  1951. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - UNLOAD DOSKRNL SYMBOLS & LOAD PROGR
  1952.     AH = 64h
  1953.     DX = 0006h (function number)
  1954.     CX = 636Ch (magic value, "cl")
  1955.     BX = 0000h (indicates special request)
  1956.     ES:DI -> ASCIZ filespec
  1957.     DS = base address for loading
  1958. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1959.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1960.     this function is only supported by the kernel debugging version of
  1961.       OS2KRNL
  1962. --------O-2164--DX0007-----------------------
  1963. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET WinOS2 CALL GATE ADDRESS
  1964.     AH = 64h
  1965.     DX = 0007h (function number)
  1966.     CX = 636Ch (magic value, "cl")
  1967.     BX = 0000h (indicates special request)
  1968. Return: AX = call gate address
  1969. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1970.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1971.     used by WinOS2 to make direct calls to OS2KRNL, bypassing the overhead
  1972.       of DOSKRNL
  1973. --------O-2164--DX0008-----------------------
  1974. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET LOADING MESSAGE
  1975.     AH = 64h
  1976.     DX = 0008h (function number)
  1977.     CX = 636Ch (magic value, "cl")
  1978.     BX = 0000h (indicates special request)
  1979. Return: DS:DX -> '$'-terminated message "Loading.  Please wait."
  1980. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1981.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1982.     this function permits National Language Support for the initial message
  1983.       displayed while WinOS2 starts a full-screen session
  1984. --------O-2164--CX636C-----------------------
  1985. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API support
  1986.     AH = 64h
  1987.     CX = 636Ch ("cl")
  1988.     BX = API ordinal (see #1402)
  1989.     other registers as appropriate for API call
  1990. Return: as appropriate for API call
  1991. SeeAlso: AH=64h/BX=0025h,AH=64h/BX=00B6h,AH=64h/BX=00CBh
  1992.  
  1993. (Table 1402)
  1994. Values for OS/2 API ordinal:
  1995.  0025h    DOS32StartSession
  1996.  0082h    DosGetCP
  1997.  00B6h    DosQFSAttach
  1998.  00BFh    DosEditName
  1999.  00CBh    DosForceDelete
  2000.  0144h    Dos32CreateEventSem
  2001.  0145h    Dos32OpenEvenSem
  2002.  0146h    Dos32CloseEventSem
  2003.  0147h    Dos32ResetEventSem
  2004.  0148h    Dos32PostEventSem
  2005.  0149h    Dos32WaitEventSem
  2006.  014Ah    Dos32QueryEventSem
  2007.  014Bh    Dos32CreateMutexSem
  2008.  014Ch    Dos32OpenMutexSem
  2009.  014Dh    Dos32CloseMutexSem
  2010.  014Eh    Dos32RequestMutexSem
  2011.  014Fh    Dos32ReleaseMutexSem
  2012.  0150h    Dos32QueryMutexSem
  2013.  0151h    Dos32CreateMuxWaitSem
  2014.  0152h    Dos32OpenMuxWaitSem
  2015.  0153h    Dos32CloseMuxWaitSem
  2016.  0154h    Dos32WaitMuxWaitSem
  2017.  0155h    Dos32AddMuxWaitSem
  2018.  0156h    Dos32DeleteMuxWaitSem
  2019.  0157h    Dos32QueryMuxWaitSem
  2020. --------O-2164--BX0025-----------------------
  2021. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DOS32StartSession
  2022.     AH = 64h
  2023.     BX = 0025h (API ordinal)
  2024.     CX = 636Ch ("cl")
  2025.     DS:SI -> STARTDATA structure (see #1403)
  2026. Return: AX = return code
  2027. SeeAlso: AH=64h/CX=636Ch,AH=64h/BX=00B6h
  2028.  
  2029. Format of OS/2 Virtual DOS Machine STARTDATA structure:
  2030. Offset    Size    Description    (Table 1403)
  2031.  00h    WORD    length of structure (must be 0018h,001Eh,0020h,0032h,or 003Ch)
  2032.  02h    WORD    relation of new process to caller (00h independent, 01h child)
  2033.  04h    WORD    fore/background (00h foreground, 01h background)
  2034.  06h    WORD    trace options (00h-02h, 00h = no trace)
  2035.  08h    DWORD    pointer to ASCIZ program title (max 62 chars) or 0000h:0000h
  2036.  0Ch    DWORD    pointer to ASCIZ program name (max 128 chars) or 0000h:0000h
  2037.  10h    DWORD    pointer to ASCIZ program args (max 144 chars) or 0000h:0000h
  2038.  14h    DWORD    "TermQ" (currently reserved, must be 00000000h)
  2039.  18h    DWORD    pointer to environment (max 486 bytes) or 0000h:0000h
  2040.  1Ch    WORD    inheritance (00h or 01h)
  2041.  1Eh    WORD    session type
  2042.         00h OS/2 session manager determines type (default)
  2043.         01h OS/2 full-screen
  2044.         02h OS/2 window
  2045.         03h PM
  2046.         04h VDM full-screen
  2047.         07h VDM window
  2048.  20h    DWORD    pointer to ASCIZ icon filename (max 128 chars) or 0000h:0000h
  2049.  24h    DWORD    "PgmHandle" (currently reserved, must be 00000000h)
  2050.  28h    WORD    "PgmControl"
  2051.  2Ah    WORD    initial column
  2052.  2Ch    WORD    initial row
  2053.  2Eh    WORD    initial width
  2054.  30h    WORD    initial height
  2055.  32h    WORD    reserved (0)
  2056.  34h    DWORD    "ObjectBuffer" (currently reserved, must be 00000000h)
  2057.  38h    DWORD    "ObjectBufferLen" (currently reserved, must be 00000000h)
  2058. --------O-2164--BX00B6-----------------------
  2059. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosQFSAttach
  2060.     AH = 64h
  2061.     BX = 00B6h (API ordinal)
  2062.     CX = 636Ch (magic value "cl")
  2063.     DS = user's data segment
  2064.     ES:DI -> FSQAttachStruc (see #1404)
  2065. Return: CF set on error
  2066.         AX = error code (see #1332 at AH=59h/BX=0000h)
  2067.     CF clear if successful
  2068.         AX = 0000h
  2069.         data buffer filled
  2070. SeeAlso: AH=64h/CX=636Ch
  2071.  
  2072. Format of OS/2 Virtual DOS Machine FSQAttachStruc:
  2073. Offset    Size    Description    (Table 1404)
  2074.  00h    DWORD    reserved
  2075.  04h    DWORD    pointer to the offset of the data buffer length
  2076.  08h    DWORD    pointer to the offset of the data buffer
  2077.  0Ch    WORD    FSA Info level
  2078.  0Eh    WORD    ordinal index into table
  2079.  10h    DWORD    pointer to the offset of the device name
  2080. Notes:    The segment value of the buffer, buffer length, and device
  2081.       name MUST all be the same.  It is defined on entry in the DS
  2082.       register.  The details of each info level are defined in the
  2083.       OS/2 CP Reference.
  2084. --------O-2164--BX00CB-----------------------
  2085. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosForceDelete
  2086.     AH = 64h
  2087.     BX = 00CBh (API ordinal)
  2088.     CX = 636Ch (magic value "cl")
  2089.     DS:DX -> ASCIZ filename
  2090. Return: CF clear if successful
  2091.         AX destroyed
  2092.     CF set on error
  2093.         AX = error code (02h,03h,05h) (see #1332 at AH=59h/BX=0000h)
  2094. Desc:    delete a file without saving it to the undelete directory
  2095. SeeAlso: AH=41h,AH=64h/CX=636Ch
  2096. --------D-2165-------------------------------
  2097. INT 21 - DOS 3.3+ - GET EXTENDED COUNTRY INFORMATION
  2098.     AH = 65h
  2099.     AL = info ID
  2100.         01h get general internationalization info
  2101.         02h get pointer to uppercase table
  2102.         04h get pointer to filename uppercase table
  2103.         05h get pointer to filename terminator table
  2104.         06h get pointer to collating sequence table
  2105.         07h (DOS 4.0+) get pointer to Double-Byte Character Set table
  2106.     BX = code page (FFFFh=global code page) (see #1411)
  2107.     DX = country ID (FFFFh=current country)
  2108.     ES:DI -> country information buffer (see #1405)
  2109.     CX = size of buffer (>= 5)
  2110. Return: CF set on error
  2111.         AX = error code (see #1332 at AH=59h/BX=0000h)
  2112.     CF clear if successful
  2113.         CX = size of country information returned
  2114.         ES:DI -> country information
  2115. Notes:    AL=05h appears to return same info for all countries and codepages; it
  2116.       has been documented for DOS 5+, but was undocumented in earlier
  2117.       versions
  2118.     NLSFUNC must be installed to get info for countries other than the
  2119.       default
  2120.     subfunctions 02h and 04h are identical under OS/2
  2121. SeeAlso: AH=38h,AH=70h"MS-DOS 7",INT 2F/AX=1401h,INT 2F/AX=1402h
  2122. SeeAlso: INT 2F/AX=14FEh
  2123.  
  2124. Format of country information:
  2125. Offset    Size    Description    (Table 1405)
  2126.  00h    BYTE    info ID
  2127. ---if info ID = 01h---
  2128.  01h    WORD    size
  2129.  03h    WORD    country ID (see #1054 at AH=38h)
  2130.  05h    WORD    code page (see #1411)
  2131.  07h 34 BYTEs    country-dependent info (see #1053 at AH=38h)
  2132. ---if info ID = 02h---
  2133.  01h    DWORD    pointer to uppercase table (see #1406)
  2134. ---if info ID = 04h---
  2135.  01h    DWORD    pointer to filename uppercase table (see #1407)
  2136. ---if info ID = 05h---
  2137.  01h    DWORD    pointer to filename character table (see #1408)
  2138. ---if info ID = 06h---
  2139.  01h    DWORD    pointer to collating table (see #1409)
  2140. ---if info ID = 07h (DOS 4.0+)---
  2141.  01h    DWORD    pointer to DBCS lead byte table (see #1410)
  2142. SeeAlso: #1429
  2143.  
  2144. Format of uppercase table:
  2145. Offset    Size    Description    (Table 1406)
  2146.  00h    WORD    table size
  2147.  02h 128 BYTEs    uppercase equivalents (if any) of chars 80h to FFh
  2148. SeeAlso: #1405,#1407
  2149.  
  2150. Format of filename uppercase table:
  2151. Offset    Size    Description    (Table 1407)
  2152.  00h    WORD    table size
  2153.  02h 128 BYTEs    uppercase equivalents (if any) of chars 80h to FFh
  2154. SeeAlso: #1405,#1406
  2155.  
  2156. Format of filename terminator table:
  2157. Offset    Size    Description    (Table 1408)
  2158.  00h    WORD    table size (not counting this word)
  2159.  02h    BYTE    ??? (01h for MS-DOS 3.30-6.00)
  2160.  03h    BYTE    lowest permissible character value for filename
  2161.  04h    BYTE    highest permissible character value for filename
  2162.  05h    BYTE    ??? (00h for MS-DOS 3.30-6.00)
  2163.  06h    BYTE    first excluded character in range \ all characters in this
  2164.  07h    BYTE    last excluded character in range  / range are illegal
  2165.  08h    BYTE    ??? (02h for MS-DOS 3.30-6.00)
  2166.  09h    BYTE    number of illegal (terminator) characters
  2167.  0Ah  N BYTEs    characters which terminate a filename:    ."/\[]:|<>+=;,
  2168. Note:    partially documented for DOS 5+, but undocumented for earlier versions
  2169. SeeAlso: #1405
  2170.  
  2171. Format of collating table:
  2172. Offset    Size    Description    (Table 1409)
  2173.  00h    WORD    table size
  2174.  02h 256 BYTEs    values used to sort characters 00h to FFh
  2175. SeeAlso: #1405
  2176.  
  2177. Format of DBCS lead byte table:
  2178. Offset    Size    Description    (Table 1410)
  2179.  00h    WORD    length
  2180.  02h 2N BYTEs    start/end for N lead byte ranges
  2181.     WORD    0000h    (end of table)
  2182. SeeAlso: #1405
  2183. --------D-2165-------------------------------
  2184. INT 21 - DOS 4.0+ - COUNTRY-DEPENDENT CHARACTER CAPITALIZATION
  2185.     AH = 65h
  2186.     AL = function
  2187.         20h capitalize character
  2188.         DL = character to capitalize
  2189.         Return: DL = capitalized character
  2190.         21h capitalize string
  2191.         DS:DX -> string to capitalize
  2192.         CX = length of string
  2193.         22h capitalize ASCIZ string
  2194.         DS:DX -> ASCIZ string to capitalize
  2195. Return: CF set on error
  2196.         AX = error code (see #1332 at AH=59h/BX=0000h)
  2197.     CF clear if successful
  2198. Note:    these calls have been documented for DOS 5+, but were undocumented in
  2199.       DOS 4.x.
  2200. --------D-216523-----------------------------
  2201. INT 21 U - DOS 4.0+ - DETERMINE IF CHARACTER REPRESENTS YES/NO RESPONSE
  2202.     AX = 6523h
  2203.     DL = character
  2204.     DH = second character of double-byte character (if applicable)
  2205. Return: CF set on error
  2206.     CF clear if successful
  2207.         AX = type
  2208.         00h no
  2209.         01h yes
  2210.         02h neither yes nor no
  2211. Note:    supported by Novell DOS 7, though prior to Update 14, the results
  2212.       depended on the kernel variant rather than the COUNTRY= setting
  2213. --------D-2165-------------------------------
  2214. INT 21 U - DOS 4.0+ internal - COUNTRY-DEPENDENT FILENAME CAPITALIZATION
  2215.     AH = 65h
  2216.     AL = function
  2217.         A0h capitalize filename character
  2218.         DL = character to capitalize
  2219.         Return: DL = capitalized character
  2220.         A1h capitalize counted filename string
  2221.         DS:DX -> filename string to capitalize
  2222.         CX = length of string
  2223.         A2h capitalize ASCIZ filename
  2224.         DS:DX -> ASCIZ filename to capitalize
  2225. Return: CF set on error
  2226.         AX = error code (see #1332 at AH=59h/BX=0000h)
  2227.     CF clear if successful
  2228. Note:    nonfunctional in MS-DOS 4.00 through 6.00 due to a bug (the code sets a
  2229.       pointer depending on the high bit of AL, but doesn't clear the
  2230.       bit before branching by function number).  Supported and
  2231.       functional(!) in Novell DOS 7 (Update 15)
  2232. --------D-216601-----------------------------
  2233. INT 21 - DOS 3.3+ - GET GLOBAL CODE PAGE TABLE
  2234.     AX = 6601h
  2235. Return: CF set on error
  2236.         AX = error code (see #1332 at AH=59h/BX=0000h)
  2237.     CF clear if successful
  2238.         BX = active code page (see #1411)
  2239.         DX = system code page (see #1411)
  2240. SeeAlso: AX=6602h
  2241. --------D-216602-----------------------------
  2242. INT 21 - DOS 3.3+ - SET GLOBAL CODE PAGE TABLE
  2243.     AX = 6602h
  2244.     BX = active code page (see #1411)
  2245.     DX = system code page (active page at boot time)
  2246. Return: CF set on error
  2247.         AX = error code (see #1332 at AH=59h/BX=0000h)
  2248.     CF clear if successful
  2249.         AX = EB41h (Novell NWDOS v7.0 when NLSFUNC not installed and
  2250.           request was for previously-active code page)
  2251. SeeAlso: AX=6601h,INT 2F/AX=14FFh
  2252.  
  2253. (Table 1411)
  2254. Values for code page:
  2255.  437    US
  2256.  850    Multilingual
  2257.  852    Slavic/Latin II (DOS 5+)
  2258.  857    Turkish
  2259.  860    Portugal
  2260.  861    Iceland
  2261.  863    Canada (French)
  2262.  865    Norway/Denmark
  2263.  
  2264. Format of DOS .CPI (Code Page Information) file header:
  2265. Offset    Size    Description    (Table 1412)
  2266.  00h    BYTE    ID tag
  2267.         FFh FONT file (Standard for generic display or
  2268.               printer font files used by MS-DOS, PC-DOS, DR DOS
  2269.               and Novell DOS)
  2270.         7Fh DRFONT file (Used by DR DOS 6.0 / Novell DOS 7 for
  2271.               enhanced & compressed display font files. DR DOS 6.0
  2272.               and Novell DOS 7 still support the standard FONT
  2273.               files, thus allowing leaning of .CPI files from
  2274.               MS-DOS to DR DOS / Novell DOS!)
  2275.  01h  7 BYTEs    ID string
  2276.         "FONT    " = FONT file (Standard for display or printer)
  2277.         "DRFONT " = DRFONT file (Enhanced compressed format used
  2278.                 by DR DOS 6.0 / Novell DOS 7 for display fonts)
  2279.  08h  8 BYTEs    reserved (0)
  2280.  10h    WORD    number of pointers (1)
  2281.  12h    BYTE    type of pointers (1)
  2282.  13h    DWORD    pointer to file offset of FontInfoHeader
  2283.         (Generally pointing to the byte just after FontFileHeader,
  2284.              that is 0000h:0017h. Due to extra data at offset 17h, this
  2285.              value has changed with DR DOS 6.0 / Novell DOS 7 DRFONTs!
  2286.              "MS-DOS 4.0 programmers reference" claimed word offset
  2287.              +15h as an endmarker (0000h), but actually it is the
  2288.              High-Word of the pointer.)
  2289. --- Extended FontFileHeader with DR DOS 6.0 / Novell DOS 7 DRFONTs: ---
  2290.  17h    BYTE    number of fonts per codepage supported by this file
  2291.              (N=4 with both DR DOS 6.0 / Novell DOS 7 DRFONT files)
  2292.  18h  N    BYTEs    cellsize (Height) of fonts 1..N
  2293.         the cellsize corresponds with the character boxes height,
  2294.           but is also the count of bytes used for each of the
  2295.           characters inside the font data (as currently all fonts
  2296.           are organized heightx8 and 8 pixel width is just one byte).
  2297.  var  N DWORDs    file offsets of DisplayFontData.
  2298.  
  2299. Format of DOS .CPI file Font Information Header:
  2300. Offset    Size    Description    (Table 1413)
  2301.  00h    WORD    number of codepage entries
  2302.     var    N codepage entry headers (see #1414)
  2303. SeeAlso: #1412
  2304.  
  2305. Format of DOS .CPI file CodePage Entry Header:
  2306. Offset    Size    Description    (Table 1414)
  2307.  00h    WORD    size of this header (normally 1Ch)
  2308.  02h    DWORD    offset of next entry, or 0000h:0000h or FFFFh:FFFFh if last
  2309.         (if a valid "next" pointer but all of the fonts indicated in
  2310.           the .CPI header have been processed, this field normally
  2311.           points at an optional text area at the end of the .CPI file
  2312.           containing copyright information)
  2313.  06h    WORD    device type
  2314.         01h display (FONT or DRFONT)
  2315.         02h printer (FONT)
  2316.  08h  8 BYTEs    blank-padded device name string
  2317.  10h    WORD    code page (see #1411)
  2318.  12h  3 WORDs    reserved (0)
  2319.  18h    DWORD    pointer to Font Data Header (see #0147)
  2320.         normally immediately follows this header
  2321. SeeAlso: #1412
  2322.  
  2323. Format of DOS .CPI file Font Data Header:
  2324. Offset    Size    Description    (Table 1415)
  2325.  00h    WORD    record type
  2326.         0001h FONT
  2327.         0002h DRFONT (DR-DOS 6.0/Novell DOS 7 display font)
  2328.  02h    WORD    number of fonts
  2329.  04h    WORD    length of font data (display fonts)
  2330.         ??? (printer fonts)
  2331.  06h    var    font data (#fonts * fontlength) bytes
  2332. SeeAlso: #1412
  2333.  
  2334. Format of DOS .CPI file ScreenFONT Header:
  2335. Offset    Size    Description    (Table 1416)
  2336.  00h  6 BYTEs    display-font header (see #1418)
  2337.  06h    var    display font data
  2338. SeeAlso: #1412
  2339.  
  2340. Format of .CPI file DRFONT Header:
  2341. Offset    Size    Description    (Table 1417)
  2342.  00h 6N BYTEs    DisplayFONT headers for N fonts (see #1418)
  2343.       M WORDs    character index table for cell offsets in font data
  2344.         currently 256 words in length
  2345. SeeAlso: #1412
  2346.  
  2347. Format of .CPI file DisplayFONT header:
  2348. Offset    Size    Description    (Table 1418)
  2349.  00h    BYTE    height of character cell
  2350.  01h    BYTE    width of character cell (currently always 08h)
  2351.  02h    BYTE    aspect ratio (height) (currently 00h, unused)
  2352.  03h    BYTE    aspect ratio (width) (currently 00h, unused)
  2353.  04h    WORD    number of characters per font (256)
  2354. SeeAlso: #1412
  2355.  
  2356. Format of .CPI file PrinterFONT header:
  2357. Offset    Size    Description    (Table 1419)
  2358.  00h    WORD    type of printer
  2359.         0001h (4201.CPI, 1050.CPI, EPS.CPI)
  2360.         0002h (4208.CPI, 5202.CPI, PPDS.CPI)
  2361.  02h    WORD    bytes per hardware/download codepage-select escape sequence
  2362.         (max 31, typically 12)
  2363.  04h  N BYTEs    escape sequence to select hardware codepage
  2364.       N BYTEs    escape sequence to select download codepage
  2365.     var    download data for printer font (including escape sequence to
  2366.           transfer data)
  2367. SeeAlso: #1412
  2368. --------D-2167-------------------------------
  2369. INT 21 - DOS 3.3+ - SET HANDLE COUNT
  2370.     AH = 67h
  2371.     BX = size of new file handle table for process
  2372. Return: CF clear if successful
  2373.     CF set on error
  2374.         AX = error code (see #1332 at AH=59h/BX=0000h)
  2375. Desc:    adjust the size of the per-process open file table, thus raising or
  2376.       lowering the limit on the number of files the caller can open
  2377.       simultaneously
  2378. Notes:    if BX <= 20, no action is taken if the handle limit has not yet been
  2379.       increased, and the table is copied back into the PSP if the limit
  2380.       is currently > 20 handles
  2381.     for file handle tables of > 20 handles, DOS 3.30 never reuses the
  2382.       same memory block, even if the limit is being reduced; this can lead
  2383.       to memory fragmentation as a new block is allocated and the existing
  2384.       one freed
  2385.     only the first 20 handles are copied to child processes in DOS 3.3-6.0
  2386.     increasing the file handles here will not, in general, increase the
  2387.       number of files that can be opened using the runtime library of a
  2388.       high-level language such as C
  2389.     Novell DOS 7 reportedly terminates the calling program if the JFT is
  2390.       being reduced in size and there are any open file handles beyond
  2391.       the portion of the JFT being retained
  2392. BUGS:    the original release of DOS 3.30 allocates a full 64K for the handle
  2393.       table on requests for an even number of handles
  2394.     DR DOS 3.41 and 5.0 will lose track of any open file handles beyond
  2395.       the portion of the JFT retained after the call; MS-DOS will indicate
  2396.       error 04h if any of the JFT entries to be removed are open
  2397. SeeAlso: AH=26h,AH=86h
  2398. --------D-2168-------------------------------
  2399. INT 21 - DOS 3.3+ - "FFLUSH" - COMMIT FILE
  2400.     AH = 68h
  2401.     BX = file handle
  2402. Return: CF clear if successful
  2403.         all data still in DOS disk buffers is written to disk immediately,
  2404.           and the file's directory entry is updated
  2405.     CF set on error
  2406.         AX = error code (see #1332 at AH=59h/BX=0000h)
  2407. SeeAlso: AX=5D01h,AH=6Ah,INT 2F/AX=1107h
  2408. --------D-2169-------------------------------
  2409. INT 21 U - DOS 4.0+ internal - GET/SET DISK SERIAL NUMBER
  2410.     AH = 69h
  2411.     AL = subfunction
  2412.         00h get serial number
  2413.         01h set serial number
  2414.     BL = drive (0=default, 1=A, 2=B, etc)
  2415.     BH = info level (00h only for DOS; OS/2 allows other levels)
  2416.     DS:DX -> disk info (see #1420)
  2417. Return: CF set on error
  2418.         AX = error code (see #1332 at AH=59h/BX=0000h)
  2419.     CF clear if successful
  2420.         AX destroyed
  2421.         (AL = 00h) buffer filled with appropriate values from extended BPB
  2422.         (AL = 01h) extended BPB on disk set to values from buffer
  2423. Notes:    does not generate a critical error; all errors are returned in AX
  2424.     error 0005h given if no extended BPB on disk
  2425.     does not work on network drives (error 0001h)
  2426.     buffer after first two bytes is exact copy of bytes 27h thru 3Dh of
  2427.       extended BPB on disk
  2428.     this function is supported under Novell NetWare versions 2.0A through
  2429.       3.11; the returned serial number is the one a DIR would display,
  2430.       the volume label is the NetWare volume label, and the file system
  2431.       is set to "FAT16".
  2432.     this function is not supported by Novell DOS 7 through Update 13, but
  2433.       Personal NetWare 1.0 does support this function
  2434.     the serial number is computed from the current date and time when the
  2435.       disk is created; the first part is the sum of the seconds/hundredths
  2436.       and month/day, the second part is the sum of the hours/minutes and
  2437.       year
  2438.     the volume label which is read or set is the one stored in the extended
  2439.       BPB on disks formatted with DOS 4.0+, rather than the special root
  2440.       directory entry used by the DIR command in COMMAND.COM (use AH=11h
  2441.       to find that volume label)
  2442. SeeAlso: AX=440Dh"DOS 3.2+"
  2443.  
  2444. Format of disk info:
  2445. Offset    Size    Description    (Table 1420)
  2446.  00h    WORD    0000h (info level)
  2447.  02h    DWORD    disk serial number (binary)
  2448.  06h 11 BYTEs    volume label or "NO NAME    " if none present
  2449.  11h  8 BYTEs    (AL=00h only) filesystem type (see #1421)
  2450.  
  2451. (Table 1421)
  2452. Values for filesystem type:
  2453.  "FAT12      "    12-bit FAT
  2454.  "FAT16      "    16-bit FAT
  2455.  "CDROM      "    High-Sierra CD-ROM filesystem
  2456.  "CD001      "    ISO 9660 CD-ROM filesystem
  2457.  "CDAUDIO "    audio CD
  2458. SeeAlso: #1420
  2459. --------O-2169-------------------------------
  2460. INT 21 - DR DOS 5.0 - NULL FUNCTION
  2461.     AH = 69h
  2462. Return: AL = 00h
  2463. SeeAlso: AH=18h
  2464. --------v-216969-----------------------------
  2465. INT 21 - VIRUS - "Rape-747" - INSTALLATION CHECK
  2466.     AX = 6969h
  2467. Return: AX = 0666h if resident
  2468. SeeAlso: AX=58CCh,AX=6304h"VIRUS",AH=71h"VIRUS"
  2469. --------d-2169FFDX0000-----------------------
  2470. INT 21 U - CUBIT v4.00 - GET CUBIT INT 21 HANDLER
  2471.     AX = 69FFh
  2472.     DX = 0000h
  2473.     BX = CB00h (magic value)
  2474. Return: ES:BX -> CUBITR.EXE handler for INT 21
  2475. Note:    the installation check consists of testing that the first eight bytes
  2476.       at the returned interrupt handler are EBh 07h "CUBITR" (a short
  2477.       jump around the signature followed by the signature); the byte
  2478.       following the signature (i.e. ES:[BX+8]) indicates whether CUBITR
  2479.       is active (01h) or disabled (00h)
  2480. SeeAlso: AX=69FFh/DX=CFBFh
  2481. Index:    installation check;CUBIT
  2482. --------d-2169FFDXCFBF-----------------------
  2483. INT 21 U - CUBIT v4.00 - UNINSTALL
  2484.     AX = 69FFh
  2485.     DX = CFBFh
  2486.     CX = EFCFh
  2487.     BX = CB00h (magic value)
  2488. Return: ES:BX -> CUBITR.EXE handler for INT 21
  2489.     CX = status
  2490.         2020h successful
  2491.         2222h failed
  2492. Note:    if DX is neither 0000h nor CFBFh on entry, some other code is executed
  2493. SeeAlso: AX=69FFh/DX=0000h
  2494. --------D-216A-------------------------------
  2495. INT 21 U - DOS 4.0+ - COMMIT FILE
  2496.     AH = 6Ah
  2497.     BX = file handle
  2498. Return: CF clear if successful
  2499.         AH = 68h
  2500.     CF set on error
  2501.         AX = error code (06h) (see #1332 at AH=59h/BX=0000h)
  2502. Note:    identical to AH=68h in DOS 5.0-6.0; not known whether this is the case
  2503.       in DOS 4.x
  2504. SeeAlso: AH=68h
  2505. --------D-216B-------------------------------
  2506. INT 21 U - DOS 4.0 internal - IFS IOCTL
  2507.     AH = 6Bh
  2508.     AL = subfunction
  2509.         00h ???
  2510.         DS:SI -> Current Directory Structure???
  2511.         CL = drive (1=A:)
  2512.         01h ???
  2513.         DS:SI -> ???
  2514.         CL = file handle???
  2515.         02h ???
  2516.         DS:SI -> Current Directory Structure???
  2517.         DI = ???
  2518.         CX = drive (1=A:)
  2519. Return: CF set on error
  2520.         AX = error code (see #1332 at INT 21/AH=59h/BX=0000h)
  2521.     CF clear if successful
  2522. Note:    passed through to INT 2F/AX=112Fh with AX on top of stack
  2523. SeeAlso: AH=6Bh"DOS 5",INT 2F/AX=112Fh
  2524. --------D-216B-------------------------------
  2525. INT 21 U - DOS 5+ - NULL FUNCTION
  2526.     AH = 6Bh
  2527. Return: AL = 00h
  2528. Note:    this function does nothing and returns immediately
  2529. SeeAlso: AH=6Bh"DOS 4"
  2530. --------D-216C00-----------------------------
  2531. INT 21 - DOS 4.0+ - EXTENDED OPEN/CREATE
  2532.     AX = 6C00h
  2533.     BL = open mode as in AL for normal open (see also AH=3Dh)
  2534.         bit 7: inheritance
  2535.         bits 4-6: sharing mode
  2536.         bit 3 reserved
  2537.         bits 0-2: access mode
  2538.         100 read-only, do not modify file's last-access time (DOS 7.0)
  2539.     BH = flags
  2540.         bit 6 = auto commit on every write (see also AH=68h)
  2541.         bit 5 = return error rather than doing INT 24h
  2542.         bit 4 = (FAT32) extended size (>= 2GB)
  2543.     CX = create attribute (see #1423)
  2544.     DL = action if file exists/does not exist (see #1424)
  2545.     DH = 00h (reserved)
  2546.     DS:SI -> ASCIZ file name
  2547. Return: CF set on error
  2548.        AX = error code (see #1332 at AH=59h/BX=0000h)
  2549.     CF clear if successful
  2550.        AX = file handle
  2551.        CX = status (see #1422)
  2552. Notes:    the PC LAN Program only supports existence actions (in DL) of 01h,
  2553.       10h with sharing=compatibility, and 12h
  2554.     DR DOS reportedly does not support this function and does not return
  2555.       an "invalid function call" error when this function is used.
  2556.     the documented bits of BX are stored in the SFT when the file is opened
  2557.       (see #1293,#1294)
  2558. BUG:    this function has bugs (at least in DOS 5.0 and 6.2) when used with
  2559.       drives handled via the network redirector (INT 2F/AX=112Eh):
  2560.         - CX (attribute) is not passed to the redirector if DL=11h,
  2561.         - CX does not return the status, it is returned unchanged because
  2562.           DOS does a PUSH CX/POP CX when calling the redirector.
  2563. SeeAlso: AH=3Ch,AH=3Dh,AX=6C01h,AH=71h,INT 2F/AX=112Eh
  2564.  
  2565. (Table 1422)
  2566. Values for extended open function status:
  2567.  01h    file opened
  2568.  02h    file created
  2569.  03h    file replaced
  2570.  
  2571. Bitfields for file create attribute:
  2572. Bit(s)    Description    (Table 1423)
  2573.  6-15    reserved
  2574.  5    archive
  2575.  4    reserved
  2576.  3    volume label
  2577.  2    system
  2578.  1    hidden
  2579.  0    readonly
  2580.  
  2581. Bitfields for action:
  2582. Bit(s)    Description    (Table 1424)
  2583.  7-4    action if file does not exist
  2584.     0000 fail
  2585.     0001 create
  2586.  3-0    action if file exists
  2587.     0000 fail
  2588.     0001 open
  2589.     0010 replace/open
  2590. --------O-216C01-----------------------------
  2591. INT 21 U - OS/2 v2.0 - "DosOpen2"
  2592.     AX = 6C01h
  2593.     BL = open mode as in AL for normal open (see also AH=3Dh)
  2594.         bit 7: inheritance
  2595.         bits 4-6: sharing mode
  2596.         bit 3 reserved
  2597.         bits 0-2: access mode
  2598.     BH = flags
  2599.         bit 6 = auto commit on every write (see also AH=68h)
  2600.         bit 5 = return error rather than doing INT 24h
  2601.     CX = create attribute (see #1423)
  2602.     DL = action if file exists/does not exist (see #1424)
  2603.     DH = 00h (reserved)
  2604.     DS:SI -> ASCIZ file name
  2605.     ES:DI -> EAOP structure
  2606. Return: CF set on error
  2607.        AX = error code (see #1332 at AH=59h/BX=0000h)
  2608.     CF clear if successful
  2609.        AX = file handle
  2610.        CX = status (see #1422)
  2611. Note:    this function is virtually identical to AX=6C00h, but supports OS/2's
  2612.       extended attributes
  2613. SeeAlso: AX=5704h,AX=6C00h,AH=6Fh"OS/2"
  2614. --------D-216D-------------------------------
  2615. INT 21 U - DOS 5+ ROM - FIND FIRST ROM PROGRAM
  2616.     AH = 6Dh
  2617.     DS:DX -> ASCIZ program name (may contain wildcrds)
  2618. Return: CF clear if found
  2619.         Disk Transfer Area filled with ROM search structure (see #1425)
  2620.     CF set if not found
  2621.         AX = error code
  2622.         0002h name not found in ROM
  2623.         0003h name contains colon or backslash
  2624.     ---if not supported (DOS <5, MS-DOS 5+ non-ROM versions)---
  2625.     AL = 00h
  2626. Notes:    the '*' wildcard matches all remaining characters in a ROM program's
  2627.       name; any following characters in the search mask are ignored up to
  2628.       another asterisk, which must be matched by an asterisk in the
  2629.       found program's name.
  2630.     the search mask and program names may contain multiple periods
  2631. SeeAlso: AH=1Ah,AH=4Eh,AH=6Eh,AX=6F00h,AX=6F02h,INT 2F/AX=160Ch
  2632.  
  2633. Format of ROM search structure:
  2634. Offset    Size    Description    (Table 1425)
  2635.  00h 13 BYTEs    ASCIZ name of found ROM program
  2636.  0Dh    DWORD    address at which to resume search (do not modify)
  2637.  11h    var    ASCIZ search mask passed in (do not modify)
  2638. --------O-216D-------------------------------
  2639. INT 21 U - OS/2 v1.x FAPI - "DosMkDir2"
  2640.     AH = 6Dh
  2641.     ???
  2642. Return: ???
  2643. Desc:    create a new directory, with extended attribute information
  2644. Note:    also supported by OS/2 v2.0+ Virtual DOS Machines
  2645. BUG:    does not work under OS/2 v2.0 because MVDM does not translate the
  2646.       real-mode segment pointer in the Extended Attribute structure
  2647.       (see #1325) into a protected-mode selector; use AH=39h followed by
  2648.       AX=5703h instead
  2649. SeeAlso: AH=39h,AX=5702h"OS/2",AX=5703h"OS/2"
  2650. --------O-216D-------------------------------
  2651. INT 21 U - Novell DOS 7 - NOP
  2652.     AH = 6Dh
  2653. Return: AX = 0000h
  2654. Note:    this function invokes the same code as other NOP functions such as
  2655.       AH=18h and AH=61h
  2656. --------D-216E-------------------------------
  2657. INT 21 U - DOS 5+ ROM - FIND NEXT ROM PROGRAM
  2658.     AH = 6Eh
  2659.     Disk Transfer Area contains result of previous FindFirst ROM
  2660.       (see AH=6Dh)
  2661. Return: CF clear if found
  2662.         Disk Transfer Area filled with updated ROM search structure
  2663.           (see #1425)
  2664.     CF set if not found
  2665.         AX = 0012h (no more matches)
  2666.     ---if not supported (DOS <5, MS-DOS 5+ non-ROM versions)---
  2667.     AL = 00h
  2668. SeeAlso: AH=4Fh,AH=6Dh
  2669. --------O-216E-------------------------------
  2670. INT 21 U - OS/2 v1.x FAPI - "DosEnumAttrib"
  2671.     AH = 6Eh
  2672.     DS:SI -> parameter packet (see #1426)
  2673. Return: CF clear if successful
  2674.         AX = 0000h
  2675.         DS:SI buffer updated
  2676.     CF set on error
  2677.         AX = error code
  2678. Note:    also supported by OS/2 v2.0+ Virtual DOS Machines
  2679. SeeAlso: AX=5703h,AH=6Fh"OS/2",INT 2F/AX=112Dh
  2680.  
  2681. Format of OS/2 DosEnumAttrib parameter packet:
  2682. Offset    Size    Description    (Table 1426)
  2683.  00h    DWORD    reserved (0)
  2684.  04h    DWORD    info level (always 00000001h)
  2685.  08h    DWORD    (call) number of entries requested
  2686.         (ret) actual number of entries returned
  2687.  0Ch    DWORD    length of buffer
  2688.  10h    DWORD    pointer to buffer for results
  2689.  14h    DWORD    number of first entry to return
  2690.  18h    DWORD    -> file handle or ASCIZ pathname
  2691.  1Ch    WORD    flag: 00h = previous field is file handle, 01h = pathname
  2692. --------D-216F00-----------------------------
  2693. INT 21 U - DOS 5+ ROM - GET ROM SCAN START ADDRESS
  2694.     AX = 6F00h
  2695. Return: CF clear
  2696.     AL = 00h
  2697.         BX = current ROM scan starting segment if function supported
  2698. SeeAlso: AH=6Dh,AX=6F01h,AX=6F02h
  2699. --------O-216F00-----------------------------
  2700. INT 21 U - OS/2 v1.x FAPI - "DosQMaxEASize" - GET MAXIMUM SIZE OF EXTENDED ATTR
  2701.     AX = 6F00h
  2702.     DS:SI -> DWORD buffer for maximum size of an extended attribute
  2703. Return: CF clear if successful
  2704.         AX = 0000h
  2705.         buffer filled
  2706.     CF set on error
  2707.         AX = error code
  2708. Note:    also supported by OS/2 v2.0+ Virtual DOS Machines
  2709. SeeAlso: AX=5703h,AX=6C01h,AH=6Eh"OS/2"
  2710. --------D-216F01-----------------------------
  2711. INT 21 U - DOS 5+ ROM - SET ROM SCAN START ADDRESS
  2712.     AX = 6F01h
  2713.     BX = new ROM scan starting address
  2714. Return: CF clear
  2715.     AL = 00h
  2716. SeeAlso: AX=6F00h,AX=6F03h
  2717. --------D-216F02-----------------------------
  2718. INT 21 U - DOS 5+ ROM - GET EXCLUSION REGION LIST
  2719.     AX = 6F02h
  2720.     ES:BX -> buffer for exclusion region list (see #1427)
  2721. Return: CF clear
  2722.     AL = 00h
  2723.     ES:BX = 0000h:0000h on error, unchanged if buffer filled
  2724. Note:    for DOS versions which do not support this function, the return value
  2725.       is AL=00h, CF unchanged, ES:BX unchanged, and the ES:BX buffer
  2726.       unchanged
  2727. SeeAlso: AX=6F00h,AX=6F03h
  2728.  
  2729. Format of ROM exclusion region list:
  2730. Offset    Size    Description    (Table 1427)
  2731.  00h    WORD    number of entries
  2732.  02h 2N WORDs    start/end segments of N excluded regions
  2733. --------D-216F03-----------------------------
  2734. INT 21 U - DOS 5+ ROM - SET EXCLUSION REGION LIST
  2735.     AX = 6F03h
  2736.     DS:DX -> new exclusion region list (see #1427)
  2737. Return: CF clear
  2738.     AL = 00h
  2739. Notes:    DOS saves only the pointer and assumes that the contents of the list
  2740.       are never changed, and that regions do not overlap
  2741.     if AL > 03h on entry, DOS returns CF set/AL=01h
  2742. SeeAlso: AX=6F01h,AX=6F02h
  2743. --------D-2170-------------------------------
  2744. INT 21 - MS-DOS 7 (Windows95) - GET/SET INTERNATIONALIZATION INFORMATION
  2745.     AH = 70h
  2746.     AL = subfunction
  2747.         00h get ??? info
  2748.         CX = buffer size (3Ah bytes needed)
  2749.         ES:DI -> buffer
  2750.         01h set above info
  2751.         CX = number of bytes to set
  2752.         DS:SI -> buffer containing ??? info (see #1428)
  2753.         02h set general internationalization info
  2754.         DS:SI -> buffer containing info (see #1429)
  2755.         CX = buffer size in bytes (up to 26h bytes used)
  2756.         first three bytes are skipped, the rest is copied to somewhere
  2757.           in the DOS data segment
  2758. Return: CF clear if successful
  2759.         ES:DI buffer filled (func 00h) (see #1428)
  2760.         CX = number of bytes actually set or returned
  2761.           (max 003Ah for functions 00h and 01h under v7.00, 0026h for
  2762.           function 02h)
  2763.     CF set on error
  2764.         AX = error code
  2765.         7000h if function not supported
  2766. SeeAlso: AH=38h,AH=65h
  2767.  
  2768. Format of MS-DOS v7.0 ??? table:
  2769. Offset    Size    Description    (Table 1428)
  2770.  00h 58 BYTEs    ??? country-specific information
  2771.         returned was (among others) "ENU USA GR"..."AM PM M/d/yy"...
  2772.          "dddd,MMMMdd,yyyy" in the German Preview version, and "US"
  2773.          instead of "GR" in the US build 450 version (with German
  2774.          country setting) and the US build 950a version with US
  2775.          country settings
  2776. SeeAlso: #1429
  2777.  
  2778. Format of MS-DOS v7.0 internationalization table:
  2779. Offset    Size    Description    (Table 1429)
  2780.  00h  3 BYTEs    unused (and ignored by DOS)
  2781.  03h    WORD    country ID (see #1054 at AH=38h)
  2782.  05h    WORD    code page (see #1411)
  2783.  07h    WORD    date format
  2784.  09h  5 BYTEs    ASCIZ current symbol string
  2785.  07h  2 BYTEs    ASCIZ thousands separator
  2786.  09h  2 BYTEs    ASCIZ decimal separator
  2787.  0Bh  2 BYTEs    ASCIZ date separator
  2788.  0Dh  2 BYTEs    ASCIZ time separator
  2789.  0Fh    BYTE    currency format
  2790.         bit 2 = set if currency symbol replaces decimal point
  2791.         bit 1 = number of spaces between value and currency symbol
  2792.         bit 0 = 0 if currency symbol precedes value
  2793.             1 if currency symbol follows value
  2794.  10h    BYTE    number of digits after decimal in currency
  2795.  11h    BYTE    time format
  2796.         bit 0 = 0 if 12-hour clock
  2797.             1 if 24-hour clock
  2798.  12h    DWORD    address of case map routine
  2799.         (FAR CALL, AL = character to map to upper case [>= 80h])
  2800.  16h  2 BYTEs    ASCIZ data-list separator
  2801.  18h 10 BYTEs    reserved
  2802. Note:    this table has the identical format to the extended country information
  2803.       retrieved via AH=65h with info ID = 01h
  2804. SeeAlso: #1053,#1405
  2805. ----------217070BX6060-----------------------
  2806. INT 21 - PCW Weather Card interface - GET DATA SEGMENT
  2807.     AX = 7070h
  2808.     BX = 6060h
  2809.     CX = 7070h
  2810.     DX = 7070h
  2811.     SI = 7070h
  2812.     DI = 7070h
  2813. Return: AX = segment of data structure (see #1430)
  2814. Notes:    the data structure is at offset 516 from this segment
  2815.     the update byte is at offset 514 from this segment.  Updates are
  2816.       once per second while this byte is nonzero and it is decremented
  2817.       once per second.  While this byte is 0 updates are once per minute.
  2818. SeeAlso: AX=7070h/BX=7070h
  2819.  
  2820. Format of PCW Weather Card data structure:
  2821. Offset    Type    Description    (Table 1430)
  2822.  00h    WORD    hour
  2823.  02h    WORD    minute
  2824.  04h    WORD    second
  2825.  06h    WORD    day
  2826.  08h    WORD    month
  2827.  0Ah    WORD    year
  2828.  0Ch    WORD    ???
  2829.  0Eh    WORD    relative barometric pressure (in 1/100 inches)
  2830.  10h    WORD    ???
  2831.  12h    WORD    ???
  2832.  14h    WORD    temperature 1 (in 1/10 degrees F)
  2833.  16h    WORD    temperature 1 lowest (in 1/10 degrees F)
  2834.  18h    WORD    temperature 1 highest (in 1/10 degrees F)
  2835.  1Ah    WORD    temperature 2 (in 1/10 degrees F)
  2836.  1Ch    WORD    temperature 2 lowest (in 1/10 degrees F)
  2837.  1Eh    WORD    temperature 2 highest (in 1/10 degrees F)
  2838.  20h    WORD    wind speed (in MPH)
  2839.  22h    WORD    average of 60 wind speed samples (in MPH)
  2840.  24h    WORD    highest wind speed (in MPH)
  2841.  26h    WORD    wind chill factor  (in 1/10 degrees F)
  2842.  28h    WORD    lowest wind chill factor (in 1/10 degrees F)
  2843.  2Ah    WORD    ???
  2844.  2Ch    WORD    wind direction (in degrees)
  2845.  2Eh    WORD    accumulated daily rainfall (in 1/10 inches)
  2846.  30h    WORD    accumulated annual rainfall (in 1/10 inches)
  2847. ----------217070BX7070-----------------------
  2848. INT 21 - PCW Weather Card interface - INSTALLATION CHECK
  2849.     AX = 7070h
  2850.     BX = 7070h
  2851.     CX = 7070h
  2852.     DX = 7070h
  2853.     SI = 7070h
  2854.     DI = 7070h
  2855. Return: AX = 0070h
  2856.     BX = 0070h
  2857.     CX = 0070h
  2858.     DX = 0070h
  2859.     SI = 0070h
  2860.     DI = 0070h
  2861. SeeAlso: AX=7070h/BX=6060h,AX=8080h
  2862. --------D-2171-------------------------------
  2863. INT 21 - Windows95 - LONG FILENAME FUNCTIONS
  2864.     AH = 71h
  2865.     AL = function
  2866.         0Dh reset drive
  2867.         39h create directory
  2868.         3Ah remove directory
  2869.         3Bh set current directory
  2870.         41h delete file
  2871.         43h get/set file attributes
  2872.         47h get current directory
  2873.         4Eh find first file
  2874.         4Fh find next file
  2875.         56h move (rename) file
  2876.         60h truename
  2877.         6Ch create/open file
  2878.         A0h get volume information
  2879.         A1h terminate FindFirst/FindNext
  2880.         A6h get file information
  2881.         A7h time conversion
  2882.         A8h generate short filename
  2883.         A9h server create/open file
  2884.         AAh create/terminate SUBST
  2885. Return: CF set on error
  2886.         AX = error code (see #1332)
  2887.         7100h if function not supported
  2888.     CF clear if successful
  2889.         other registers as for corresponding "old" DOS function
  2890. Notes:    if error 7100h is returned, the old-style function should be called
  2891.     AX=714Eh returns a "search handle" which must be passed to AX=714Fh;
  2892.       when the search is complete, AX=71A1h must be called to terminate
  2893.       the search
  2894.     for compatibility with DOS versions prior to v7.00, the carry flag
  2895.       should be set on call to ensure that it is set on exit
  2896. SeeAlso: AH=39h,AH=3Ah,AH=3Bh,AH=41h,AX=4300h,AX=4301h,AX=4304h,AX=4306h
  2897. SeeAlso: AX=4307h,AH=47h,AH=4Eh,AH=4Fh,AH=56h,AH=6Ch,AX=714Eh,AX=714Fh
  2898. SeeAlso: AX=71A0h,AX=71A1h
  2899. --------v-2171-------------------------------
  2900. INT 21 - VIRUS - "1205" - INSTALLATION CHECK
  2901.     AH = 71h
  2902. Return: AH = 17h if "1205" is resident
  2903. SeeAlso: AX=6969h"VIRUS",AH=76h"VIRUS"
  2904. --------D-21710D-----------------------------
  2905. INT 21 - Windows95 - RESET DRIVE
  2906.     AX = 710Dh
  2907.     CX = action (see #1431)
  2908.     DX = drive number
  2909. Return: CF clear
  2910. Note:    for compatibility with DOS versions prior to v7.00, the carry flag
  2911.       should be set on call to ensure that it is set on exit
  2912. SeeAlso: AH=0Dh
  2913.  
  2914. (Table 1431)
  2915. Values for drive reset action:
  2916.  0000h    flush filesystem buffers for drive, and reset drive
  2917.  0001h    flush filesystem buffers and cache for drive, and reset drive
  2918.  0002h    remount DriveSpace volume
  2919. --------D-217139-----------------------------
  2920. INT 21 - Windows95 - LONG FILENAME - MAKE DIRECTORY
  2921.     AX = 7139h
  2922.     DS:DX -> ASCIZ long directory name (including path)
  2923. Return: CF clear if successful
  2924.     CF set on error
  2925.         AX = error code (see #1332)
  2926.         7100h if function not supported
  2927. Note:    for compatibility with DOS versions prior to v7.00, the carry flag
  2928.       should be set on call to ensure that it is set on exit
  2929. SeeAlso: AH=39h,AX=713Ah,AX=713Bh
  2930. --------D-21713A-----------------------------
  2931. INT 21 - Windows95 - LONG FILENAME - REMOVE DIRECTORY
  2932.     AX = 713Ah
  2933.     DS:DX -> ASCIZ long name of directory to remove
  2934. Return: CF clear if successful
  2935.     CF set on error
  2936.         AX = error code (see #1332)
  2937.         7100h if function not supported
  2938. Note:    for compatibility with DOS versions prior to v7.00, the carry flag
  2939.       should be set on call to ensure that it is set on exit
  2940. SeeAlso: AH=3Ah,AX=7139h
  2941. --------D-21713B-----------------------------
  2942. INT 21 - Windows95 - LONG FILENAME - CHANGE DIRECTORY
  2943.     AX = 713Bh
  2944.     DS:DX -> ASCIZ long name of directory to make current
  2945. Return: CF clear if successful
  2946.     CF set on error
  2947.         AX = error code (see #1332)
  2948.         7100h if function not supported
  2949. Note:    for compatibility with DOS versions prior to v7.00, the carry flag
  2950.       should be set on call to ensure that it is set on exit
  2951. SeeAlso: AH=0Eh,AH=3Bh,AX=7139h
  2952. --------D-217141-----------------------------
  2953. INT 21 - Windows95 - LONG FILENAME - DELETE FILE
  2954.     AX = 7141h
  2955.     DS:DX -> ASCIZ long name of file to delete
  2956.     SI = wildcard and attributes flag
  2957.         0000h wildcards are not allowed, and search attributes are
  2958.             ignored
  2959.         0001h wildcards are allowed, and only files with matching
  2960.             names and attributes are deleted
  2961.     CL = search attributes
  2962.     CH = must-match attributes
  2963. Return: CF clear if successful
  2964.     CF set on error
  2965.         AX = error code (see #1332)
  2966.         7100h if function not supported
  2967. Note:    for compatibility with DOS versions prior to v7.00, the carry flag
  2968.       should be set on call to ensure that it is set on exit
  2969. SeeAlso: AH=41h
  2970. --------D-217143-----------------------------
  2971. INT 21 - Windows95 - LONG FILENAME - EXTENDED GET/SET FILE ATTRIBUTES
  2972.     AX = 7143h
  2973.     DS:DX -> ASCIZ filename
  2974.     BL = action
  2975.         00h retrieve attributes
  2976.         Return:    CX = file attributes (see #1073)
  2977.         01h set attributes
  2978.         CX = attributes
  2979.         02h get physical size of compressed file
  2980.         Return: DX:AX = actual disk usage of file, in bytes
  2981.         03h set last write date/time
  2982.         DI = new last-write date (see #1318)
  2983.         CX = new last-write time (see #1317)
  2984.         04h get last write date/time
  2985.         Return:    CX = last write time (see #1317)
  2986.             DI = last write date (see #1318)
  2987.         05h set last access date
  2988.         DI = new last-access date (see #1318)
  2989.         06h get last access date
  2990.         Return:    DI = last access date (see #1318)
  2991.         07h set creation date/time
  2992.         DI = new creation date (see #1318)
  2993.         CX = new creation time (see #1317)
  2994.         SI = hundredths (10-millisecond units past time in CX, 0-199)
  2995.         08h get creation date/time
  2996.         Return:    CX = creation time (see #1317)
  2997.             DI = creation date (see #1318)
  2998.             SI = hundredths (10-millisecond units past time in CX)
  2999. Return: CF clear if successful
  3000.     CF set on error
  3001.         AX = error code (see #1332)
  3002.         7100h if function not supported
  3003. Note:    for compatibility with DOS versions prior to v7.00, the carry flag
  3004.       should be set on call to ensure that it is set on exit
  3005. SeeAlso: AX=4300h,AX=4301h
  3006. --------D-217147-----------------------------
  3007. INT 21 - Windows95 - LONG FILENAME - GET CURRENT DIRECTORY
  3008.     AX = 7147h
  3009.     DL = drive number (00h = current, 01h = A:, etc.)
  3010.     DS:SI -> buffer for ASCIZ directory name
  3011. Return: CF clear if successful
  3012.     CF set on error
  3013.         AX = error code (see #1332)
  3014.         7100h if function not supported
  3015. Notes:    the returned pathname does not include the drive letter, colon, or
  3016.       leading backslash, and is not necessarily a long filename -- this
  3017.       function returns whatever path was used when changing to the
  3018.       current directory, and may include a mixture of long and short
  3019.       components
  3020.     the provided buffer must be at least as large as the value indicated
  3021.       by AX=71A0h
  3022.     for compatibility with DOS versions prior to v7.00, the carry flag
  3023.       should be set on call to ensure that it is set on exit
  3024. SeeAlso: AH=47h,AX=713Bh,AX=7160h,AX=71A0h
  3025. --------D-21714E-----------------------------
  3026. INT 21 - Windows95 - LONG FILENAME - FIND FIRST MATCHING FILE
  3027.     AX = 714Eh
  3028.     CL = allowable-attributes mask (see #1073 at AX=4301h)
  3029.           (bits 0 and 5 ignored)
  3030.     CH = required-attributes mask (see #1073)
  3031.     SI = date/time format (see #1432)
  3032.     DS:DX -> ASCIZ filespec (both "*" and "*.*" match any filename)
  3033.     ES:DI -> FindData record (see #1433)
  3034. Return: CF clear if successful
  3035.         AX = filefind handle (needed to continue search)
  3036.         CX = Unicode conversion flags (see #1434)
  3037.     CF set on error
  3038.         AX = error code
  3039.         7100h if function not supported
  3040. Notes:    this function is only available when IFSMgr is running, not under bare
  3041.       MS-DOS 7
  3042.     the application should close the filefind handle with AX=71A1h as soon
  3043.       as it has completed its search
  3044.     for compatibility with DOS versions prior to v7.00, the carry flag
  3045.       should be set on call to ensure that it is set on exit
  3046. SeeAlso: AH=4Eh,AX=714Fh,AX=71A1h
  3047.  
  3048. (Table 1432)
  3049. Values for Windows95 date/time format:
  3050.  0000h    use 64-bit file time format
  3051.  0001h    use MS-DOS date/time values (see #1317,#1318) in low double-word of
  3052.       file time QWORD (date is high word, time is low word of double-word)
  3053.  
  3054. Format of Windows95 long filename FindData record:
  3055. Offset    Size    Description    (Table 1433)
  3056.  00h    DWORD    file attributes
  3057.         bits 0-6 standard DOS attributes (see #1073 at INT 21/AX=4301h)
  3058.         bit 8: temporary file
  3059.  04h    QWORD    file creation time (number of 100ns intervals since 1/1/1601)
  3060.  0Ch    QWORD    last access time
  3061.  14h    QWORD    last modification time
  3062.  1Ch    DWORD    file size (high 32 bits)
  3063.  20h    DWORD    file size (low 32 bits)
  3064.  24h  8 BYTEs    reserved
  3065.  2Ch 260 BYTEs    ASCIZ full filename
  3066. 130h 14 BYTEs    ASCIZ short filename (for backward compatibility)
  3067.  
  3068. Bitfields for Windows95 Unicode conversion flags:
  3069. Bit(s)    Description    (Table 1434)
  3070.  0    the returned full filename contains underscores for un-convertable
  3071.       Unicode characters
  3072.  1    the returned short filename contains underscores for un-convertable
  3073.       Unicode characters
  3074. --------D-21714F-----------------------------
  3075. INT 21 - Windows95 - LONG FILENAME - FIND NEXT MATCHING FILE
  3076.     AX = 714Fh
  3077.     BX = filefind handle (from AX=714Eh)
  3078.     SI = date/time format (see #1432)
  3079.     ES:DI -> buffer for FindData record (see #1433)
  3080. Return: CF clear if successful
  3081.         CX = Unicode conversion flags (see #1434)
  3082.     CF set on error
  3083.         AX = error code
  3084.         7100h if function not supported
  3085. Notes:    this function is only available when IFSMgr is running, not under bare
  3086.       MS-DOS 7
  3087.     for compatibility with DOS versions prior to v7.00, the carry flag
  3088.       should be set on call to ensure that it is set on exit
  3089. SeeAlso: AH=4Eh,AX=714Eh,AX=71A1h
  3090. --------D-217156-----------------------------
  3091. INT 21 - Windows95 - LONG FILENAME - RENAME FILE
  3092.     AX = 7156h
  3093.     DS:DX -> ASCIZ old file or directory name (long names allowed)
  3094.     ES:DI -> ASCIZ new name (long names allowed)
  3095. Return: CF clear if successful
  3096.     CF set on error
  3097.         AX = error code
  3098.         7100h if function not supported
  3099. Note:    the file may be renamed into a different directory, but not across
  3100.       disks
  3101. SeeAlso: AH=56h,AX=7141h
  3102. --------D-217160CL00-------------------------
  3103. INT 21 - Windows95 - LONG FILENAME - "TRUENAME" - CANONICALIZE PATH
  3104.     AX = 7160h
  3105.     CL = 00h
  3106.     CH = SUBST expansion flag
  3107.         00h return a path containing true path for a SUBSTed drive letter
  3108.         80h return a path containing the SUBSTed drive letter
  3109.     DS:SI -> ASCIZ filename or path (either long name or short name)
  3110.     ES:DI -> 261-byte buffer for canonicalized name
  3111. Return: CF set on error
  3112.         AX = error code
  3113.         02h invalid component in directory path or drive letter only
  3114.         03h malformed path or invalid drive letter
  3115.         ES:DI buffer unchanged
  3116.     CF clear if successful
  3117.         ES:DI buffer filled with fully qualified name
  3118.         AX destroyed
  3119. Desc:    determine the canonical name of the specified filename or path,
  3120.       corresponding to the undocumented TRUENAME command in COMMAND.COM
  3121. Notes:    if a complete path is given, the result will be a short-form complete
  3122.       path; otherwise, the given relative path is appended to the
  3123.       short-form current directory name, '.'/'..'/'...'/etc. are resolved,
  3124.       and the final result uppercased without converting any remaining
  3125.       long-form names to short-form
  3126.     for compatibility with DOS versions prior to v7.00, the carry flag
  3127.       should be set on call to ensure that it is set on exit
  3128. SeeAlso: AH=60h,AX=7160h/CL=01h
  3129. --------D-217160CL01-------------------------
  3130. INT 21 - Windows95 - LONG FILENAME - GET SHORT (8.3) FILENAME FOR FILE
  3131.     AX = 7160h
  3132.     CL = 01h
  3133.     CH = SUBST expansion flag
  3134.         00h return a path containing true path for a SUBSTed drive letter
  3135.         80h return a path containing the SUBSTed drive letter
  3136.     DS:SI -> ASCIZ long filename or path
  3137.     ES:DI -> 67-byte buffer for short filename
  3138. Return: CF set on error
  3139.         AX = error code
  3140.         02h invalid component in directory path or drive letter only
  3141.         03h malformed path or invalid drive letter
  3142.         ES:DI buffer unchanged
  3143.     CF clear if successful
  3144.         ES:DI buffer filled with equivalent short filename (full path,
  3145.           even if relative path given, and all uppercase)
  3146. Note:    this call returns the short name for any long-filename portions of
  3147.       the provided pathname or filename
  3148. SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=02h
  3149. --------D-217160CL02-------------------------
  3150. INT 21 - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
  3151.     AX = 7160h
  3152.     CL = 02h
  3153.     CH = SUBST expansion flag
  3154.         00h return a path containing true path for a SUBSTed drive letter
  3155.         80h return a path containing the SUBSTed drive letter
  3156.     DS:SI -> ASCIZ short filename or path
  3157.     ES:DI -> 261-byte buffer for canonicalized long name
  3158. Return: CF set on error
  3159.         AX = error code
  3160.         02h invalid component in directory path or drive letter only
  3161.         03h malformed path or invalid drive letter
  3162.         ES:DI buffer unchanged
  3163.     CF clear if successful
  3164.         ES:DI buffer filled with qualified long name (can contain
  3165.           lowercase letters)
  3166. Desc:    determine the canonical name of the specified filename or path,
  3167.       corresponding to the undocumented TRUENAME command in COMMAND.COM
  3168. Note:    this call returns the short name for any long-filename portions of
  3169.       the provided pathname or filename
  3170. BUG:    even though the maximum length of a complete long pathname is 260
  3171.       characters, Windows95 returns CF set/AX=0003h even if the file
  3172.       exists whenever the full pathname is more than 255 characters
  3173. SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=01h
  3174. --------D-21716C-----------------------------
  3175. INT 21 - Windows95 - LONG FILENAME - CREATE OR OPEN FILE
  3176.     AX = 716Ch
  3177.     BX = access mode and sharing flags (see #1436,also AX=6C00h)
  3178.     CX = attributes
  3179.     DX = action (see #1435)
  3180.     DS:SI -> ASCIZ filename
  3181.     DI = alias hint (number to append to short filename for disambiguation)
  3182. Return: CF clear if successful
  3183.         AX = file handle
  3184.         CX = action taken
  3185.         0001h file opened
  3186.         0002h file created
  3187.         0003h file replaced
  3188.     CF set on error
  3189.         AX = error code (see #1332)
  3190.         7100h if function not supported
  3191. SeeAlso: AX=6C00h,AX=7141h,AX=7156h,AX=71A9h
  3192.  
  3193. Bitfields for Windows95 long-name open action:
  3194. Bit(s)    Description    (Table 1435)
  3195.  0    open file (fail if file does not exist)
  3196.  1    truncate file if it already exists (fail if file does not exist)
  3197.  4    create new file if file does not already exist (fail if exists)
  3198. Note:    the only valid combinations of multiple flags are bits 4&0 and 4&1
  3199.  
  3200. Bitfields for Windows95 file access/sharing modes:
  3201. Bit(s)    Description    (Table 1436)
  3202.  2-0    file access mode
  3203.     000 read-only
  3204.     001 write-only
  3205.     010 read-write
  3206.     100 read-only, do not modify file's last-access time
  3207.  6-4    file sharing modes
  3208.  7    no-inherit flag
  3209.  8    do not buffer data (requires that all reads/writes be exact physical
  3210.       sectors)
  3211.  9    do not compress file even if volume normally compresses files
  3212.  10    use alias hint in DI as numeric tail for short-name alias
  3213.  12-11    unused??? (0)
  3214.  13    return error code instead of generating INT 24h if critical error
  3215.       while opening file
  3216.  14    commit file after every write operation
  3217. SeeAlso: #1056
  3218. --------D-2171A0-----------------------------
  3219. INT 21 - Windows95 - LONG FILENAME - GET VOLUME INFORMATION
  3220.     AX = 71A0h
  3221.     DS:DX -> ASCIZ root name (e.g. "C:\")
  3222.     ES:DI -> buffer for file system name
  3223.     CX = size of ES:DI buffer
  3224. Return: CF clear if successful
  3225.         BX = file system flags (see #1437)
  3226.         CX = maximum length of file name [usually 255]
  3227.         DX = maximum length of path [usually 260]
  3228.         ES:DI buffer filled (ASCIZ, e.g. "FAT","NTFS","CDFS")
  3229.     CF set on error
  3230.         AX = error code
  3231.         7100h if function not supported
  3232. Notes:    for the file system name buffer, 32 bytes should be sufficient; that's
  3233.      what is used in some sample code by Walter Oney from Microsoft.
  3234.     this function accesses the disk the first time it is called
  3235. SeeAlso: AX=714Eh,AX=7160h/CL=00h
  3236.  
  3237. Bitfields for long filename volume information flags:
  3238. Bit(s)    Description    (Table 1437)
  3239.  0    searches are case sensitive
  3240.  1    preserves case in directory entries
  3241.  2    uses Unicode characters in file and directory names
  3242.  3-13    reserved (0)
  3243.  14    supports DOS long filename functions
  3244.  15    volume is compressed
  3245. --------D-2171A1-----------------------------
  3246. INT 21 - Windows95 - LONG FILENAME - "FindClose" - TERMINATE DIRECTORY SEARCH
  3247.     AX = 71A1h
  3248.     BX = filefind handle (from AX=714Eh)
  3249. Return: CF clear if successful
  3250.     CF set on error
  3251.        AX = error code
  3252.         7100h if function not supported
  3253. Notes:    this function must be called after starting a search with AX=714Eh,
  3254.       to indicate that the search handle returned by that function will
  3255.       no longer be used
  3256.     this function is only available when IFSMgr is running, not under bare
  3257.       MS-DOS 7
  3258. SeeAlso: AH=4Eh,AX=714Eh,AX=714Fh
  3259. --------D-2171A2-----------------------------
  3260. INT 21 U - Windows95 - internal
  3261.     AX = 71A2h
  3262.     ???
  3263. Return: ???
  3264. Note:    documented as "for internal use by Windows 95 only"
  3265. --------D-2171A3-----------------------------
  3266. INT 21 U - Windows95 - internal
  3267.     AX = 71A3h
  3268.     ???
  3269. Return: ???
  3270. Note:    documented as "for internal use by Windows 95 only"
  3271. --------D-2171A4-----------------------------
  3272. INT 21 U - Windows95 - internal
  3273.     AX = 71A4h
  3274.     ???
  3275. Return: ???
  3276. Note:    documented as "for internal use by Windows 95 only"
  3277. --------D-2171A5-----------------------------
  3278. INT 21 U - Windows95 - internal
  3279.     AX = 71A5h
  3280.     ???
  3281. Return: ???
  3282. Note:    documented as "for internal use by Windows 95 only"
  3283. --------D-2171A6-----------------------------
  3284. INT 21 - Windows95 - LONG FILENAME - GET FILE INFO BY HANDLE
  3285.     AX = 71A6h
  3286.     BX = file handle
  3287.     DS:DX -> buffer for file information (see #1438)
  3288.     CF set
  3289. Return: CF clear if successful
  3290.         file information record filled
  3291.     CF set on error
  3292.         AX = error code
  3293.         7100h if function not supported
  3294. SeeAlso: AX=71A7h/BL=00h
  3295.  
  3296. Format of Windows95 file information:
  3297. Offset    Size    Description    (Table 1438)
  3298.  00h    DWORD    file attributes
  3299.  04h    QWORD    creation time (0 = unsupported)
  3300.  0Ch    QWORD    last access time (0 = unsupported)
  3301.  14h    QWORD    last write time
  3302.  1Ch    DWORD    volume serial number
  3303.  20h    DWORD    high 32 bits of file size
  3304.  24h    DWORD    low 32 bits of file size
  3305.  28h    DWORD    number of links to file
  3306.  2Ch    DWORD    unique file identifier (high 32 bits)
  3307.  30h    DWORD    unique file identifier (low 32 bits)
  3308. Note:    the file identifer and volume serial number together uniquely identify
  3309.       a file while it is open; the identifier may change when the system
  3310.       is restarted or the file is first opened
  3311. --------D-2171A7BL00-------------------------
  3312. INT 21 - Windows95 - LONG FILENAME - FILE TIME TO DOS TIME
  3313.     AX = 71A7h
  3314.     BL = 00h
  3315.     DS:SI -> QWORD file time
  3316. Return: CF clear if successful
  3317.         CX = DOS time (see #1317)
  3318.         DX = DOS date (see #1318)
  3319.         BH = hundredths (10-millisecond units past time in CX)
  3320.     CF set on error
  3321.         AX = error code
  3322.         7100h if function not supported
  3323. Desc:    convert Win95 64-bit file time (UTC) into DOS-style date and time
  3324.       (local timezone)
  3325. Note:    the conversion fails if the file time's value is outside the range
  3326.       1/1/1980 and 12/31/2107
  3327. SeeAlso: AX=71A6h,AX=71A7h/BL=01h
  3328. --------D-2171A7BL01-------------------------
  3329. INT 21 - Windows95 - LONG FILENAME - DOS TIME TO FILE TIME
  3330.     AX = 71A7h
  3331.     BL = 01h
  3332.     CX = DOS time (see #1317)
  3333.     DX = DOS date (see #1318)
  3334.     BH = hundredths (10-millisecond units past time in CX)
  3335.     ES:DI -> buffer for QWORD file time
  3336. Return: CF clear if successful
  3337.         ES:DI buffer filled
  3338.     CF set on error
  3339.         AX = error code
  3340.         7100h if function not supported
  3341. Desc:    convert DOS-style date and time (local timezone) into Win95 64-bit
  3342.       file time (UTC)
  3343. SeeAlso: AX=71A6h,AX=71A7h/BL=00h
  3344. --------D-2171A8-----------------------------
  3345. INT 21 - Windows95 - LONG FILENAME - GENERATE SHORT FILENAME
  3346.     AX = 71A8h
  3347.     DS:SI -> ASCIZ long filename (no path allowed!)
  3348.     ES:DI -> buffer for ASCIZ short filename
  3349.     DH = short name's format
  3350.         00h 11-char directory entry/FCB filename format
  3351.         01h DOS 8.3
  3352.     DL = character sets
  3353.         bits 7-4: short name's character set (see #1439)
  3354.         bits 3-0: long name's character set (see #1439)
  3355. Return: CF clear if successful
  3356.         ES:DI buffer filled
  3357.     CF set on error
  3358.         AX = error code
  3359.         7100h if function not supported
  3360. Note:    this function uses the same algorithm as the filesystem except that
  3361.       the returned name never has a numeric tail for disambiguation
  3362. SeeAlso: AX=7160h/CL=00h,AX=7160h/CL=02h,AX=71A7h/BL=00h
  3363.  
  3364. (Table 1439)
  3365. Values for Windows95 filename character set:
  3366.  00h    Windows ANSI
  3367.  01h    current OEM character set
  3368.  02h    Unicode
  3369. --------D-2171A9-----------------------------
  3370. INT 21 - Windows95 - LONG FILENAME - SERVER CREATE OR OPEN FILE
  3371.     AX = 71A9h
  3372.     BX = access mode and sharing flags (see #1436,also AX=6C00h)
  3373.     CX = attributes
  3374.     DX = action (see #1435)
  3375.     DS:SI -> ASCIZ filename
  3376.     DI = alias hint (number to append to short filename for disambiguation)
  3377. Return: CF clear if successful
  3378.         AX = global file handle
  3379.         CX = action taken
  3380.         0001h file opened
  3381.         0002h file created
  3382.         0003h file replaced
  3383.     CF set on error
  3384.         AX = error code (see #1332)
  3385.         7100h if function not supported
  3386. Note:    for use by real-mode servers only
  3387. SeeAlso: AX=6C00h,AX=716Ch
  3388. --------D-2171AABH00-------------------------
  3389. INT 21 - Windows95 - LONG FILENAME - CREATE SUBST
  3390.     AX = 71AAh
  3391.     BH = 00h
  3392.     BL = drive number (00h = default, 01h = A:, etc.)
  3393.     DS:DX -> ASCIZ pathname to associate with drive letter
  3394. Return: CF clear if successful
  3395.     CF set on error
  3396.         AX = error code (see #1332)
  3397.         7100h if function not supported
  3398. SeeAlso: AX=71AAh/BH=01h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#1295
  3399. --------D-2171AABH01-------------------------
  3400. INT 21 - Windows95 - LONG FILENAME - TERMINATE SUBST
  3401.     AX = 71AAh
  3402.     BH = 01h
  3403.     BL = drive number (01h = A:, etc.)
  3404. Return: CF clear if successful
  3405.     CF set on error
  3406.         AX = error code (see #1332)
  3407.         7100h if function not supported
  3408. Note:    the specified drive number may not be 00h (default), and presumably not
  3409.       the current drive either
  3410. SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#1295
  3411. --------D-2171AABH02-------------------------
  3412. INT 21 - Windows95 - LONG FILENAME - QUERY SUBST
  3413.     AX = 71AAh
  3414.     BH = 02h
  3415.     BL = drive number (01h = A:, etc.)
  3416.     DS:DX -> buffer for ASCIZ pathname associated with drive letter
  3417. Return: CF clear if successful
  3418.         DS:DX buffer filled
  3419.     CF set on error
  3420.         AX = error code (see #1332)
  3421.         7100h if function not supported
  3422. Note:    the specified drive number may not be 00h (default drive)
  3423. SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=01h,INT 2F/AX=1000h,#1295
  3424. --------D-2172-------------------------------
  3425. INT 21 - Windows95 beta - LFN-FindClose
  3426.     AH = 72h
  3427.     details not available
  3428. Return:    CF clear if successful
  3429.     CF set on error
  3430.         AX = error code (see #1332)
  3431.         7200h if function not supported (e.g. under bare MS-DOS 7)
  3432. Note:    this function was present in beta versions of Windows95, but is
  3433.       probably not present in the release version
  3434. SeeAlso: AX=71A1h
  3435. --------D-2173-------------------------------
  3436. INT 21 - MS-DOS 7 - DRIVE LOCKING ???
  3437.     AH = 73h
  3438.     DL = drive (0=current, 1=A:, etc.)
  3439.     CL = which flag to get or set
  3440.         00h drive flag???
  3441.         01h ???
  3442.     AL = subfunction
  3443.         00h get ???
  3444.         01h set ???
  3445.         CH = new values for ??? flags
  3446.             bit 1: ??? (CL=00h only)
  3447.             bit 3: ??? (CL=01h only)
  3448. Return: CF clear if successful
  3449.         for AL=00h:
  3450.         AL = value of CL on entry
  3451.         for CL=00h: AH = new flag and 06h (i.e. bits 1 and 2 used)
  3452.         for CL=01h: AH = new flag and 08h (i.e. bit 3 used)
  3453.         (flag being taken from a table of bytes)
  3454.     CF set on error
  3455.         AX = error code (01h,0Fh,etc.) (see #1332)
  3456.         7300h if function not supported
  3457. Note:    these two subfunctions are available even when only the MS-DOS kernel
  3458.       is running
  3459. --------D-217302-----------------------------
  3460. INT 21 - Windows95 - FAT32 - "Get_ExtDPB" - GET EXTENDED DPB
  3461.     AX = 7302h
  3462.     DL = drive number (00h=default, 01h=A:, etc.)
  3463.     ES:DI -> buffer for drive parameter block (DPB) (see #1440)
  3464.     CX = length of buffer
  3465. Return: CF clear if successful
  3466.         ES:DI buffer filled
  3467.     CF set on error
  3468.         AX = error code
  3469. SeeAlso: AX=7303h,AX=7304h,AH=1Fh,AH=32h
  3470.  
  3471. Format of Extended Drive Parameter Block:
  3472. Offset    Size    Description    (Table 1440)
  3473.  00h 24 BYTEs    standard DOS 4+ DPB
  3474.  18h    BYTE    "dpb_flags" (undocumented)
  3475.  19h    DWORD    pointer to next DPB
  3476.  1Dh    WORD    cluster at which to start search for free space when writing,
  3477.         usually the last cluster allocated
  3478.  1Fh    WORD    number of free clusters on drive, FFFFh = unknown
  3479.  21h    WORD    high word of free cluster count
  3480.  23h    WORD    active FAT/mirroring
  3481.         bits 3-0: the 0-based FAT number of the active FAT
  3482.         bits 6-4: reserved (0)
  3483.         bit 7: do not mirror active FAT to inactive FATs
  3484.  25h    WORD    sector number of file system information sector, or
  3485.           FFFFh for none (see also #1441)
  3486.  27h    WORD    sector number of backup boot sector
  3487.  29h    DWORD    first sector number of the first cluster
  3488.  2Dh    DWORD    maximum cluster number
  3489.  31h    DWORD    number of sectors occupied by FAT
  3490.  35h    DWORD    cluster number of start of root directory
  3491. Note:    except for offset 18h, all of the first 33 bytes are identical to
  3492.       the standard DOS 4-6 DPB
  3493. SeeAlso: #1049 at AH=32h,#1316
  3494.  
  3495. Format of File System Information structure:
  3496. Offset    Size    Description    (Table 1441)
  3497.  00h    DWORD    signature 61417272h
  3498.  04h    DWORD    number of free clusters (FFFFFFFFh if unknown)
  3499.  08h    DWORD    most recently allocated cluster
  3500.  0Ch 12 BYTEs    reserved
  3501. SeeAlso: #1440
  3502. --------D-217303-----------------------------
  3503. INT 21 - Windows95 - FAT32 - GET EXTENDED FREE SPACE ON DRIVE
  3504.     AX = 7303h
  3505.     DS:DX -> ASCIZ string for drive ("C:\" or "\\SERVER\Share")
  3506.     ES:DI -> buffer for extended free space structure (see #1442)
  3507.     CX = length of buffer for extended free space
  3508. Return: CF clear if successful
  3509.         ES:DI buffer filled
  3510.     CF set on error
  3511.         AX = error code
  3512. SeeAlso: AX=7302h,AX=7304h,AX=7305h,AH=36h
  3513.  
  3514. Format of extended free space structure:
  3515. Offset    Size    Description    (Table 1442)
  3516.  00h    WORD    ??? "The true size of the drive. Get_ExtFreeSpace returns
  3517.           the value to this field."
  3518.  02h    WORD    (call) structure version??? (0000h)
  3519.         (ret) ???
  3520.  04h    DWORD    number of sectors per cluster (with adjustment for compression)
  3521.  08h    DWORD    number of bytes per sector
  3522.  0Ch    DWORD    number of available clusters
  3523.  10h    DWORD    total number of clusters on the drive
  3524.  14h    DWORD    number of physical sectors available on the drive, without
  3525.           adjustment for compression
  3526.  18h    DWORD    total number of physical sectors on the drive, without
  3527.           adjustment for compression
  3528.  1Ch    DWORD    number of available allocation units, without adjustment
  3529.           for compression
  3530.  20h    DWORD    total allocation units, without adjustment for compression
  3531.  24h  8 BYTEs    reserved
  3532. --------D-217304-----------------------------
  3533. INT 21 - Windows95 - FAT32 - Set DPB TO USE FOR FORMATTING
  3534.     AX = 7304h
  3535.     DL = drive number (00h=default, 01h=A:, etc.)
  3536.     ES:DI -> buffer for Set_DPBforFormat structure (see #1443)
  3537. Return: CF clear if successful
  3538.         ES:DI buffer updated
  3539.     CF set on error
  3540.         AX = error code
  3541. SeeAlso: AX=7302h,AX=7303h,AX=7305h
  3542.  
  3543. Format of Set_DPBforFormat structure:
  3544. Offset    Size    Description    (Table 1443)
  3545.  00h    WORD    (call) size
  3546.  02h    WORD    (call) structure version???  (0000h)
  3547.         (ret) ???
  3548.  04h    DWORD    (call) function number
  3549.         00h invalidate DPB counts
  3550.         01h rebuild DPB from BPB
  3551.         02h force media change (next access to drive rebuild DPB)
  3552.         03h get/set active FAT number and mirroring
  3553.         04h get/set root directory cluster number
  3554. ---function 00h---
  3555.  08h    DWORD    new DPB free count (00000000h=no change, FFFFFFFFh=unknown)
  3556.  0Ch    DWORD    new DPB next-free (00000000h=no change, FFFFFFFFh=unknown)
  3557.  10h    DWORD    unused
  3558.  14h    DWORD    unused
  3559. ---function 01h---
  3560.  08h    DWORD    unused???
  3561.  0Ch    DWORD    (call) -> BIOS Parameter Block from which to rebuild DPB
  3562.  10h    DWORD    unused
  3563.  14h    DWORD    unused
  3564. ---function 02h---
  3565.  08h    DWORD    unused
  3566.  0Ch    DWORD    unused
  3567.  10h    DWORD    unused
  3568.  14h    DWORD    unused
  3569. ---function 03h---
  3570.  08h    DWORD    (call) new active FAT/mirroring state, or FFFFFFFFh to get
  3571.         bits 3-0: the 0-based FAT number of the active FAT
  3572.         bits 6-4: reserved (0)
  3573.         bit 7: do not mirror active FAT to inactive FATs
  3574.  0Ch    DWORD    (ret) previous active FAT/mirroring state (as above)
  3575.  10h    DWORD    unused
  3576.  14h    DWORD    unused
  3577. ---function 04h---
  3578.  08h    DWORD    (call) new root directory cluster number
  3579.             FFFFFFFFh to get current
  3580.  0Ch    DWORD    (ret) previous root directory cluster number
  3581.  10h    DWORD    unused
  3582.  14h    DWORD    unused
  3583. --------D-217305CXFFFF-----------------------
  3584. INT 21 - Windows95 - FAT32 - EXTENDED ABSOLUTE DISK READ/WRITE
  3585.     AX = 7305h
  3586.     CX = FFFFh
  3587.     DL = drive number (00h=default, 01h=A:, etc.)
  3588.     SI = read/write mode flags (see #1444)
  3589.     DS:BX -> disk I/O packet (see #2203 at INT 25)
  3590. Return: CF clear if successful
  3591.     CF set on error
  3592.         AX = error code
  3593. SeeAlso: AX=7302h,AX=7304h,INT 25,INT 26
  3594.  
  3595. Bitfields for Extended Absolute Disk Read/Write mode flags:
  3596. Bit(s)    Description    (Table 1444)
  3597.  0    direction (0=read, 1=write)
  3598.  12-1    reserved (0)
  3599.  14-13    write type (should be 00 on reads)
  3600.     00 unknown data
  3601.     01 FAT data
  3602.     10 directory data
  3603.     11 file data
  3604.  15    reserved (0)
  3605. --------v-217575-----------------------------
  3606. INT 21 - VIRUS - "LEGO" -INSTALLATION CHECK
  3607.     AX = 7575h
  3608. Return: AX = 4321h if resident
  3609. SeeAlso: AX=6969h,AH=76h"VIRUS"
  3610. --------v-2176-------------------------------
  3611. INT 21 - VIRUS - "Klaeren"/"Hate" - INSTALLATION CHECK
  3612.     AH = 76h
  3613. Return: AL = 48h if resident
  3614. SeeAlso: AX=7575h,AX=7700h"VIRUS"
  3615. --------v-217700-----------------------------
  3616. INT 21 - VIRUS - "Growing Block" - INSTALLATION CHECK
  3617.     AX = 7700h
  3618. Return: AX = 0920h if resident
  3619. SeeAlso: AH=76h,AX=7BCEh,AH=7Fh
  3620. --------V-217734-----------------------------
  3621. INT 21 U - SCROLLit v1.7 - INSTALLATION CHECK
  3622.     AX = 7734h
  3623. Return: DX = 3477h if installed
  3624.         AX = segment of resident code
  3625. Program: ScrollIt is a shareware backscroll utility by Bromfield Software
  3626.       Products
  3627. --------U-217761-----------------------------
  3628. INT 21 - WATCH.COM v3.2+ - INSTALLATION CHECK
  3629.     AX = 7761h ('wa')
  3630. Return: AX = 6177h
  3631. Note:    WATCH.COM is part of the "TSR" package by TurboPower Software
  3632. SeeAlso: INT 16/AX=7761h
  3633. --------v-217BCE-----------------------------
  3634. INT 21 - VIRUS - "Whisper"/"Taipan" - INSTALLATION CHECK
  3635.     AX = 7BCEh
  3636. Return: AX = 7BCEh if resident (???)
  3637. SeeAlso: AX=5454h"VIRUS",AX=7700h,AX=7BCFh,AH=7Fh"VIRUS"
  3638. --------v-217BCF-----------------------------
  3639. INT 21 - VIRUS - "Tai-Pan.666"/"Doom II Death" - INSTALLATION CHECK
  3640.     AX = 7BCFh
  3641. Return: AX = 7BCFh if resident
  3642. SeeAlso: AX=7BCEh"VIRUS",AH=7Dh"VIRUS"
  3643. --------v-217D-------------------------------
  3644. INT 21 - VIRUS - "OffSpring" - INSTALLATION CHECK
  3645.     AH = 7Dh
  3646. Return: AH = FAh if installed
  3647. SeeAlso: AX=7BCFh"VIRUS",AH=7Fh"VIRUS"
  3648. --------v-217F-------------------------------
  3649. INT 21 - VIRUS - "Squeaker","ASeXual" - INSTALLATION CHECK
  3650.     AH = 7Fh
  3651. Return: AH = 80h if resident
  3652. SeeAlso: AX=7BCEh,AH=83h"VIRUS"
  3653. --------D-2180-------------------------------
  3654. INT 21 - European MS-DOS 4.0 - "AEXEC" - EXECUTE PROGRAM IN BACKGROUND
  3655.     AH = 80h
  3656.     CX = mode
  3657.         0000h place child in zombie mode on exit to preserve exit code
  3658.         0001h discard child process and exit code on termination
  3659.     DS:DX -> ASCIZ full program name
  3660.     ES:BX -> parameter block (as for AX=4B00h)
  3661. Return: CF clear if successful
  3662.         AX = Command Subgroup ID (CSID)
  3663.     CF set on error
  3664.         AX = error code (see #1332 at AH=59h/BX=0000h)
  3665. Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
  3666.       by several other European OEMs; its release falls between mainstream
  3667.       versions 3.2 and 3.3
  3668. Desc:    asynchronously execute a program, creating a new process for it
  3669. Notes:    this function is called by the DETACH command
  3670.     there is a system-wide limit of 32 processes
  3671.     the CSID is used to identify all processes that have been spawned by
  3672.       a given process, whether directly or indirectly
  3673.     programs to be run in the background must use the new executable format
  3674.       (see #1248 at AH=4Bh)
  3675.     background processes may only perform asynchronous (background) EXECs,
  3676.       either this function or AX=4B04h
  3677.     background processes may execute INT 11, INT 12, INT 21, INT 2A, and
  3678.       INT 2F at any time; they may execute INT 10 and INT 16 only while
  3679.       they have opened a popup screen via INT 2F/AX=1401h; no other
  3680.       interrupts may be executed from the background
  3681.     background processes may not use drive B: or overlay their code
  3682.       segments
  3683.     see AX=8700h for an installation check
  3684.     the "NE" new executable format made its first appearance in European
  3685.       MS-DOS 4.0
  3686. SeeAlso: AH=4Bh,AH=87h,INT 2F/AX=1400h"POPUP"
  3687. ----------218080-----------------------------
  3688. INT 21 - PCW Weather Card interface - UNINSTALL PCW.COM AND FREE MEMORY
  3689.     AX = 8080h
  3690. Return: ???
  3691. SeeAlso: AX=7070h/BX=7070h
  3692. --------D-2181-------------------------------
  3693. INT 21 - European MS-DOS 4.0 - "FREEZE" - STOP A PROCESS
  3694.     AH = 81h
  3695.     BX = flag (00h freeze command subtree, 01h only specified process)
  3696.     CX = Process ID of head of command subtree
  3697. Return: CF clear if successful
  3698.     CF set on error
  3699.         AX = error code (no such process)
  3700. Desc:    temporarily suspend a process or a process and all of its children
  3701. Note:    if BX=0001h, this call will not return until the process is actually
  3702.       frozen, which may not be until after it unblocks from an I/O
  3703.       operation
  3704. SeeAlso: AH=82h,AH=89h,AX=8E00h,INT 15/AX=101Dh
  3705. --------D-2182-------------------------------
  3706. INT 21 - European MS-DOS 4.0 - "RESUME" - RESTART A PROCESS
  3707.     AH = 82h
  3708.     BX = flag (00h resume command subtree, 01h only specified process)
  3709.     CX = Process ID of head of command subtree
  3710. Return: CF clear if successful
  3711.     CF set on error
  3712.         AX = error code (no such process)
  3713. Desc:    restart a previously-suspended process or a process and all of its
  3714.       children
  3715. SeeAlso: AH=81h,INT 15/AX=101Eh
  3716. --------D-2183-------------------------------
  3717. INT 21 - European MS-DOS 4.0 - "PARTITION" - GET/SET FOREGROUND PARTITION SIZE
  3718.     AH = 83h
  3719.     AL = function
  3720.         00h get size
  3721.         01h set new size
  3722.         BX = new size in paragraphs
  3723. Return: CF clear if successful
  3724.         BX = current size (function 00h) or old size (function 01h)
  3725.     CF set on error
  3726.         AX = error code (01h,07h,0Dh)(see #1332 at AH=59h/BX=0000h)
  3727. Desc:    specify or determine how much memory may be allocated by the foreground
  3728.       process
  3729. Note:    if the partition size is set to 0000h, no partition management is done
  3730.       and all memory allocation is compatible with DOS 3.2.
  3731.     the partition size can be changed regardless of what use is being made
  3732.       of the changed memory; subsequent allocations will follow the
  3733.       partition rules (foreground processes may allocate only foreground
  3734.       memory; background processes allocate background memory first, then
  3735.       foreground memory)
  3736. SeeAlso: AH=48h,AH=4Ah
  3737. --------v-2183-------------------------------
  3738. INT 21 - VIRUS - "SVC" - INSTALLATION CHECK
  3739.     AH = 83h
  3740. Return: DX = 1990h if resident
  3741. SeeAlso: AH=76h,AH=84h"VIRUS"
  3742. --------v-2184-------------------------------
  3743. INT 21 - VIRUS - "SVC 5.0" or "SVC 6.0" - INSTALLATION CHECK
  3744.     AH = 84h
  3745. Return: DX = 1990h if resident
  3746.         BH = version number (major in high nybble, minor in low)
  3747. SeeAlso: AH=83h"VIRUS",AH=89h"VIRUS"
  3748. --------D-218400-----------------------------
  3749. INT 21 - European MS-DOS 4.0 - "CREATMEM" - CREATE A SHARED MEMORY AREA
  3750.     AX = 8400h
  3751.     BX = size in bytes (0000h = 65536)
  3752.     CX = flags
  3753.         bit 6: zero-initialize segment
  3754.     DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
  3755. Return: CF clear if successful
  3756.         AX = segment address of shared memory global object
  3757.     CF set on error
  3758.         AX = error code (06h,08h) (see #1332 at AH=59h/BX=0000h)
  3759. Desc:    create an area of memory which may be accessed by multiple processes
  3760. Notes:    shared memory objects are created as special files (thus the
  3761.       restriction on the name)
  3762.     on successful creation, the reference count is set to 1
  3763. SeeAlso: AX=8401h,AX=8402h,INT 15/AX=DE19h
  3764. --------D-218401-----------------------------
  3765. INT 21 - European MS-DOS 4.0 - "GETMEM" - OBTAIN ACCESS TO SHARED MEMORY AREA
  3766.     AX = 8401h
  3767.     CX = flags
  3768.         bit 7: writable segment (ignored by MS-DOS 4.0)
  3769.     DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
  3770. Return: CF clear if successful
  3771.         AX = segment address of shared memory global object
  3772.         CX = size in bytes
  3773.     CF set on error
  3774.         AX = error code (invalid name)
  3775. Desc:    get address of a previously-created area of memory which may be
  3776.       accessed by multiple processes
  3777. Note:    this call increments the reference count for the shared memory area
  3778. SeeAlso: AX=8400h,AX=8402h
  3779. --------D-218402-----------------------------
  3780. INT 21 - European MS-DOS 4.0 - "RELEASEMEM" - FREE SHARED MEMORY AREA
  3781.     AX = 8402h
  3782.     BX = handle (segment address of shared memory object)
  3783. Return: CF clear if successful
  3784.     CF set on error
  3785.         AX = error code (no such name)
  3786. Desc:    indicate that the specified area of shared memory will no longer be
  3787.       used by the caller
  3788. Note:    the reference count is decremented and the shared memory area is
  3789.       deallocated if the new reference count is zero
  3790. SeeAlso: AX=8400h,AX=8401h,INT 15/AX=DE19h
  3791. --------D-2185-------------------------------
  3792. INT 21 U - European MS-DOS 4.0 - ???
  3793.     AH = 85h
  3794.     ???
  3795. Return: ???
  3796. --------D-2186-------------------------------
  3797. INT 21 - European MS-DOS 4.0 - "SETFILETABLE" - INSTALL NEW FILE HANDLE TABLE
  3798.     AH = 86h
  3799.     BX = total number of file handles in new table
  3800. Return: CF clear if successful
  3801.     CF set on error
  3802.         AX = error code (06h,08h) (see #1332 at AH=59h/BX=0000h)
  3803. Desc:    adjust the size of the per-process open file table, thus raising or
  3804.       lowering the limit on the number of files the caller can open
  3805.       simultaneously
  3806. Notes:    any currently-open files are copied to the new table
  3807.     if the table is increased beyond the default 20 handles, only the
  3808.       first 20 will be inherited by child processes
  3809.     error 06h is returned if the requested number of handles exceeds
  3810.       system limits or would require closing currently-open files
  3811. SeeAlso: AH=26h,AH=67h
  3812. --------D-2187-------------------------------
  3813. INT 21 - European MS-DOS 4.0 - "GETPID" - GET PROCESS IDENTIFIER
  3814.     AH = 87h
  3815. Return: AX = PID
  3816.     BX = parent process's PID
  3817.     CX = Command Subgroup ID (CSID)
  3818. Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
  3819.       by several other European OEMs; its release falls between mainstream
  3820.       versions 3.2 and 3.3
  3821. Desc:    determine an identifier by which to access the calling process
  3822. Notes:    called by MS C v5.1 getpid() function
  3823.     this function apparently must return AX=0001h for INT 21/AH=80h to
  3824.       succeed
  3825.     one possible check for European MS-DOS 4.0 is to issue this call with
  3826.       AL=00h and check whether AL is nonzero on return
  3827. SeeAlso: AH=30h,AH=62h,AH=80h
  3828. Index:    installation check;European MS-DOS 4.0
  3829. --------D-2188-------------------------------
  3830. INT 21 U - European MS-DOS 4.0 - ???
  3831.     AH = 88h
  3832.     ???
  3833. Return: ???
  3834. SeeAlso: AH=87h
  3835. --------D-2189-------------------------------
  3836. INT 21 - European MS-DOS 4.0 - SLEEP
  3837.     AH = 89h
  3838.     CX = time in milliseconds or 0000h to give up time slice
  3839. Return: CF clear if successful
  3840.         CX = 0000h
  3841.     CF set on error
  3842.         AX = error code (interrupted system call)
  3843.         CX = sleep time remaining
  3844. Desc:    suspend the calling process for the specified duration
  3845. Notes:    the sleep interval is rounded up to the next higher increment of the
  3846.       scheduler clock, and may be extended further if other processes are
  3847.       running
  3848.     this call may be interrupted by signals (see AH=8Dh)
  3849.     reportedly called by Microsoft C 4.0 startup code
  3850.     background processes have higher priority than the foreground process,
  3851.       and should thus periodically yield the CPU
  3852. SeeAlso: AH=81h,INT 15/AX=1000h,INT 2F/AX=1680h,INT 7A/BX=000Ah
  3853. --------v-2189-------------------------------
  3854. INT 21 - VIRUS - "Vriest" - INSTALLATION CHECK
  3855.     AH = 89h
  3856. Return: AX = 0123h if resident
  3857. SeeAlso: AH=84h"VIRUS",AH=90h"VIRUS"
  3858. --------D-218A-------------------------------
  3859. INT 21 - European MS-DOS 4.0 - "CWAIT" - WAIT FOR CHILD TO TERMINATE
  3860.     AH = 8Ah
  3861.     BL = range (00h command subtree, 01h any child)
  3862.     BH = suspend flag
  3863.         00h suspend if children exist but none are dead
  3864.         01h return if no dead children
  3865.     CX = Process ID of head of command subtree
  3866. Return: CF clear if successful
  3867.         AH = termination type (see #1445)
  3868.         AL = return code from child or aborting signal
  3869.         BX = PID of child (0000h if no dead children)
  3870.     CF set on error
  3871.         AX = error code (no child,interrupted system call)
  3872. Desc:    get return code from an asynchronously-executed child program,
  3873.       optionally waiting if no return code is available
  3874. SeeAlso: AH=4Bh,AH=4Dh,AH=80h,AH=8Dh
  3875.  
  3876. (Table 1445)
  3877. Values for termination type:
  3878.  00h    normal termination
  3879.  01h    aborted by Control-C
  3880.  02h    aborted by I/O error
  3881.  03h    terminate and stay resident
  3882.  04h    aborted by signal
  3883.  05h    aborted by program error
  3884. --------D-218B-------------------------------
  3885. INT 21 U - European MS-DOS 4.0 - ???
  3886.     AH = 8Bh
  3887.     ???
  3888. Return: ???
  3889. SeeAlso: AH=87h
  3890. --------D-218C-------------------------------
  3891. INT 21 - European MS-DOS 4.0 - SET SIGNAL HANDLER
  3892.     AH = 8Ch
  3893.     AL = signal number (see #1446)
  3894.     BL = action (see #1447)
  3895.     DS:DX -> signal handler (see #1448)
  3896. Return: CF clear if successful
  3897.         AL = previous action
  3898.         ES:BX -> previous signal handler
  3899.     CF set on error
  3900.         AX = error code (01h,invalid SigNumber or Action)
  3901.           (see #1332 at AH=59h/BX=0000h)
  3902. Desc:    set the routine which will be invoked on a number of exceptional
  3903.       conditions
  3904. Note:    all signals will be sent to the most recently installed handler
  3905. SeeAlso: AH=8Dh
  3906.  
  3907. (Table 1446)
  3908. Values for European MS-DOS 4.0 signal number:
  3909.  01h    SIGINTR        Control-C or user defined interrupt key
  3910.  08h    SIGTERM        program termination
  3911.  09h    SIGPIPE        broken pipe
  3912.  0Dh    SIGUSER1    reserved for user definition
  3913.  0Eh    SIGUSER2    reserved for user definition
  3914.  
  3915. (Table 1447)
  3916. Values for signal action:
  3917.  00h    SIG_DFL        terminate process on receipt
  3918.  01h    SIG_IGN        ignore signal
  3919.  02h    SIG_GET        signal is accepted
  3920.  03h    SIG_ERR        sender gets error
  3921.  04h    SIG_ACK        acknowledge received signal and clear it, but don't
  3922.               change current setting
  3923.  
  3924. (Table 1448)
  3925. Values signal handler is called with:
  3926.     AL = signal number (see #1446)
  3927.     AH = signal argument
  3928. Return: RETF, CF set: terminate process
  3929.     RETF, CF clear, ZF set: abort any interrupted system call with an error
  3930.     RETF, CF clear, ZF clear: restart any interrupted system call
  3931.     IRET: restart any interrupted system call
  3932. Note:    the signal handler may also perform a nonlocal GOTO by resetting the
  3933.       stack pointer and jumping; before doing so, it should dismiss the
  3934.       signal by calling this function with BL=04h
  3935. --------D-218D-------------------------------
  3936. INT 21 - European MS-DOS 4.0 - SEND SIGNAL
  3937.     AH = 8Dh
  3938.     AL = signal number (see #1446)
  3939.     BH = signal argument
  3940.     BL = action
  3941.         00h send to entire command subtree
  3942.         01h send only to specified process
  3943.     DX = Process ID
  3944. Return: CF clear if successful
  3945.     CF set on error
  3946.         AX = error code (01h,06h)(see #1332 at AH=59h/BX=0000h)
  3947. Desc:    invoke the exceptional-condition handler for the specified process
  3948. Note:    error 06h may be returned if one or more of the affected processes
  3949.       have an error handler for the signal
  3950. SeeAlso: AH=8Ch
  3951. --------D-218E00BH00-------------------------
  3952. INT 21 - European MS-DOS 4.0 - "SETPRI" - GET/SET PROCESS PRIORITY
  3953.     AX = 8E00h
  3954.     BH = 00h
  3955.     BL = action
  3956.         00h set priority for command subtree
  3957.         01h set priority for specified process only
  3958.     CX = Process ID
  3959.     DH = 00h
  3960.     DL = change in priority (00h to get priority)
  3961. Return: CF clear if successful
  3962.         DL = process priority
  3963.         DH destroyed
  3964.     CF set on error
  3965.         AX = error code (01h,no such process)(see #1332 at AH=59h)
  3966. Desc:    specify or determine the execution priority of the specified process
  3967.       or the process and all of its children
  3968. SeeAlso: AH=81h
  3969. --------D-218F-------------------------------
  3970. INT 21 U - European MS-DOS 4.0 - ???
  3971.     AH = 8Fh
  3972.     ???
  3973. Return: ???
  3974. SeeAlso: AH=87h
  3975. --------D-2190-------------------------------
  3976. INT 21 U - European MS-DOS 4.0 - ???
  3977.     AH = 90h
  3978.     ???
  3979. Return: ???
  3980. SeeAlso: AH=87h
  3981. --------v-2190-------------------------------
  3982. INT 21 - VIRUS - "Carioca" - INSTALLATION CHECK
  3983.     AH = 90h
  3984. Return: AH = 01h if resident
  3985. SeeAlso: AH=89h"VIRUS",AX=9753h"VIRUS"
  3986. --------D-2191-------------------------------
  3987. INT 21 U - European MS-DOS 4.0 - ???
  3988.     AH = 91h
  3989.     ???
  3990. Return: ???
  3991. SeeAlso: AH=87h
  3992. --------D-2192-------------------------------
  3993. INT 21 U - European MS-DOS 4.0 - ???
  3994.     AH = 92h
  3995.     ???
  3996. Return: ???
  3997. SeeAlso: AH=87h
  3998. --------D-2193-------------------------------
  3999. INT 21 - European MS-DOS 4.0 - "PIPE" - CREATE A NEW PIPE
  4000.     AH = 93h
  4001.     CX = size in bytes
  4002. Return: CF clear if successful
  4003.         AX = read handle
  4004.         BX = write handle
  4005.     CF set on error
  4006.         AX = error code (08h) (see #1332 at AH=59h/BX=0000h)
  4007. Desc:    create a communications channel which may be used for interprocess
  4008.       data and command exchanges
  4009. SeeAlso: AH=3Ch,AH=3Fh"DOS",AH=40h"DOS",AH=84h
  4010. --------D-2194-------------------------------
  4011. INT 21 U - European MS-DOS 4.0 - ???
  4012.     AH = 94h
  4013.     ???
  4014. Return: ???
  4015. SeeAlso: AH=87h
  4016. --------D-2195-------------------------------
  4017. INT 21 - European MS-DOS 4.0 - HARD ERROR PROCESSING
  4018.     AH = 95h
  4019.     AL = new state
  4020.        00h enabled
  4021.        01h disabled, automatically fail hard errors
  4022. Return: AX = previous setting
  4023. Desc:    specify whether hard (critical) errors should automatically fail the
  4024.       system call or invoke an INT 24
  4025. SeeAlso: INT 24
  4026. --------D-2196-------------------------------
  4027. INT 21 U - European MS-DOS 4.0 - ???
  4028.     AH = 96h
  4029.     ???
  4030. Return: ???
  4031. --------D-2197-------------------------------
  4032. INT 21 U - European MS-DOS 4.0 - ???
  4033.     AH = 97h
  4034.     ???
  4035. Return: ???
  4036. --------v-219753-----------------------------
  4037. INT 21 - VIRUS - "Nina" - INSTALLATION CHECK
  4038.     AX = 9753h
  4039. Return: never (executes original program) if virus resident
  4040. SeeAlso: AH=90h"VIRUS",AX=A1D5h"VIRUS",AX=9AD5h"VIRUS"
  4041. --------D-2198-------------------------------
  4042. INT 21 U - European MS-DOS 4.0 - ???
  4043.     AH = 98h
  4044.     ???
  4045. Return: ???
  4046. --------D-2199-------------------------------
  4047. INT 21 u - European MS-DOS 4.0 - "PBLOCK" - BLOCK A PROCESS
  4048.     AH = 99h
  4049.     DS:BX -> memory location to block on
  4050.     CX = timeout in milliseconds
  4051.     DH = nonzero if interruptable
  4052. Return: CF clear if awakened by event
  4053.         AX = 0000h
  4054.     CF set if unusual wakeup
  4055.         ZF set if timeout, clear if interrupted by signal
  4056.         AX = nonzero
  4057. Desc:    suspend calling process until another process sends a "restart" signal
  4058.       or a timeout occurs
  4059. SeeAlso: AH=9Ah,INT 2F/AX=0802h
  4060. --------D-219A-------------------------------
  4061. INT 21 u - European MS-DOS 4.0 - "PRUN" - UNBLOCK A PROCESS
  4062.     AH = 9Ah
  4063.     DS:BX -> memory location processes may have blocked on
  4064. Return: AX = number of processes awakened
  4065.     ZF set if no processes awakened
  4066. Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
  4067.       by several other European OEMs; its release falls between mainstream
  4068.       versions 3.2 and 3.3
  4069. Desc:    restart all processes waiting for the specified "restart" signal
  4070. SeeAlso: AH=99h,INT 2F/AX=0802h
  4071. --------v-219AD5------------------------
  4072. INT 21 - VIRUS - "Massacre/Beavis" - INSTALLATION CHECK
  4073.     AX = 9AD5h
  4074. Return: AX = 9AD4h if resident
  4075. SeeAlso: AX=6969h"VIRUS",AX=A1D5h"VIRUS"
  4076. --------I-21A0-------------------------------
  4077. INT 21 - Attachmate Extra! - GET 3270 DISPLAY STATE
  4078.     AH = A0h
  4079. Return: AL = display status (see #1449)
  4080.     BX = host window status (see #1450)
  4081. Program: Attachmate Extra! is a 3270 emulator by Attachmate Corporation
  4082. SeeAlso: AH=A1h
  4083.  
  4084. Bitfields for Attachmate Extra! display status:
  4085. Bit(s)    Description    (Table 1449)
  4086.  7    0=windowed, 1=enlarged
  4087.  6-3    current screen profile number 0-9
  4088.  2-0    active window number (0=PC, 1-4=host B-E, 5-6=notepad F-G)
  4089.  
  4090. Bitfields for host window status:
  4091. Bit(s)    Description    (Table 1450)
  4092.  15    reserved
  4093.  14    0=host E window installed, 1=not
  4094.  13    0=host E terminal on, 1=off
  4095.  12    0=host E window displayed, 1=not
  4096.  11    reserved
  4097.  10    0=host D window installed, 1=not
  4098.  9    0=host D terminal on, 1=off
  4099.  8    0=host D window displayed, 1=not
  4100.  7    reserved
  4101.  6    0=host C window installed, 1=not
  4102.  5    0=host C terminal on, 1=off
  4103.  4    0=host C window displayed, 1=not
  4104.  3    reserved
  4105.  2    0=host B window installed, 1=not
  4106.  1    0=host B terminal on, 1=off
  4107.  0    0=host B window displayed, 1=not
  4108. --------I-21A1-------------------------------
  4109. INT 21 - Attachmate Extra! - SET 3270 DISPLAY STATE
  4110.     AH = A1h
  4111.     AL = new display status byte (see #1449)
  4112. SeeAlso: AH=A0h,AH=A2h
  4113. --------v-21A1D5-----------------------------
  4114. INT 21 - VIRUS - "789"/"Filehider" - INSTALLATION CHECK
  4115.     AX = A1D5h
  4116. Return: AX = 900Dh if resident
  4117. SeeAlso: AX=9753h,AX=9AD5h,AX=A55Ah
  4118. --------I-21A2-------------------------------
  4119. INT 21 - Attachmate Extra! - SET HOST WINDOW STATE
  4120.     AH = A2h
  4121.     AL = new host window status byte (see #1451)
  4122. SeeAlso: AH=A1h
  4123.  
  4124. Bitfields for Attachmate Extra! host window status:
  4125. Bit(s)    Description    (Table 1451)
  4126.  7    0=power off, 1=power on
  4127.  6    0=not installed, 1=installed
  4128.  5-3    reserved
  4129.  2-0    window number 1-4=host B-E
  4130. --------I-21A3-------------------------------
  4131. INT 21 - Attachmate Extra! - SEND KEYSTROKES TO HOST WINDOW
  4132.     AH = A3h
  4133.     AL = window number (1-4=host B-E)
  4134.     CX = 0001h
  4135.     DS:BX -> keystroke buffer
  4136.     DL = zero if keystroke buffer contains host function code (see #1452),
  4137.           non-zero if keystroke buffer contains ASCII character
  4138. Return: CX = zero if character sent, non-zero if not
  4139.     BX incremented if CX=0
  4140.  
  4141. (Table 1452)
  4142. Values for Attachmate Extra! host function code:
  4143.  00h=reserved    10h=PF16    20h=Clear    30h=SysReq
  4144.  01h=PF1    11h=PF17    21h=Print    31h=ErInp
  4145.  02h=PF2    12h=PF18    22h=Left    32h=ErEof
  4146.  03h=PF3    13h=PF19    23h=Right    33h=Ident
  4147.  04h=PF4    14h=PF20    24h=Up        34h=Test
  4148.  05h=PF5    15h=PF21    25h=Down    35h=Reset
  4149.  06h=PF6    16h=PF22    26h=Home    36h=DevCncl
  4150.  07h=PF7    17h=PF23    27h=Fast Left    37h=Dup
  4151.  08h=PF8    18h=PF24    28h=Fast Right    38h=FldMark
  4152.  09h=PF9    19h=Alt on    29h=Bksp    39h=Enter
  4153.  0Ah=PF10    1Ah=Alt off    2Ah=Insert    3Ah=CrSel
  4154.  0Bh=PF11    1Bh=Shift on    2Bh=Delete
  4155.  0Ch=PF12    1Ch=Shift off    2Ch=Backtab
  4156.  0Dh=PF13    1Dh=PA1        2Dh=Tab
  4157.  0Eh=PF14    1Eh=PA2        2Eh=Newline
  4158.  0Fh=PF15    1Fh=PA3        2Fh=Attn
  4159. --------I-21A4-------------------------------
  4160. INT 21 - Attachmate Extra! - GET HOST WINDOW BUFFER ADDRESS
  4161.     AH = A4h
  4162.     AL = window number (1-4=host B-E)
  4163. Return: DS:BX -> 3270 display buffer
  4164. SeeAlso: AH=A5h,AH=B8h
  4165. --------I-21A5-------------------------------
  4166. INT 21 - Attachmate Extra! - GET HOST WINDOW CURSOR POSITION
  4167.     AH = A5h
  4168.     AL = window number (1-4=host B-E)
  4169. Return: BX = cursor position (80 * row + column, where 0:0 is upper left)
  4170. Note:    if the host window is configured with the Extended Attribute (EAB)
  4171.       feature, multiply the cursor position by 2 to obtain the byte offset
  4172.       into the display buffer
  4173. SeeAlso: AH=A4h
  4174. --------v-21A55A-----------------------------
  4175. INT 21 - VIRUS - "Eddie-2" - INSTALLATION CHECK
  4176.     AX = A55Ah
  4177. Return: AX = 5AA5h if resident
  4178. SeeAlso: AX=A1D5h,AX=AA00h
  4179. --------v-21AA00-----------------------------
  4180. INT 21 - VIRUS - "Blinker" - INSTALLATION CHECK
  4181.     AX = AA00h
  4182. Return: AX = 00AAh if resident
  4183. SeeAlso: AX=A55Ah,AX=AA03h
  4184. --------v-21AA03-----------------------------
  4185. INT 21 - VIRUS - "Backtime" - INSTALLATION CHECK
  4186.     AX = AA03h
  4187. Return: AX = 03AAh if resident
  4188. SeeAlso: AX=AA00h,AH=ABh
  4189. --------v-21AB-------------------------------
  4190. INT 21 - VIRUS - "600" or "Voronezh"-family - INSTALLATION CHECK
  4191.     AH = ABh
  4192. Return: AX = 5555h if resident
  4193. SeeAlso: AX=AA03h,AX=ABCDh,AX=BBBBh"VIRUS"
  4194. --------v-21ABCD-----------------------------
  4195. INT 21 - VIRUS - Major BBS - INSTALLATION CHECK
  4196.     AX = ABCDh
  4197. Return: AX = 1234h if installed
  4198. SeeAlso: AH=ABh"VIRUS",AX=ABCDh"SuperVirus"
  4199. --------v-21ABCD------------------------
  4200. INT 21 - VIRUS - "SuperVirus 2" - INSTALLATION CHECK
  4201.     AX = ABCDh
  4202. Return: AX = DCBAh if resident
  4203. SeeAlso: AX=ABCDh"VIRUS",AX=BBBBh"VIRUS"
  4204. --------I-21AF-------------------------------
  4205. INT 21 - Attachmate Extra! - GET TRANSLATE TABLE ADDRESS
  4206.     AH = AFh
  4207. Return: DS:BX -> translate tables (see #1453)
  4208.  
  4209. Format of Attachmate Extra! translate tables:
  4210. Offset    Size    Description    (Table 1453)
  4211.  00h 256 BYTEs    ASCII to 3270 buffer code translate table
  4212. 100h 256 BYTEs    3270 buffer code to ASCII translate table
  4213. 200h 256 BYTEs    3270 buffer code to EBCDIC translate table
  4214. 300h 256 BYTEs    EBCDIC to 3270 buffer code translate table
  4215. --------v-21B3-------------------------------
  4216. INT 21 - VIRUS - "Requires" - INSTALLATION CHECK
  4217.     AH = B3h
  4218. Return: AX = 9051h if resident
  4219. SeeAlso: AH=7Fh"VIRUS",AX=B974h"VIRUS"
  4220. --------N-21B300-----------------------------
  4221. INT 21 U - Novell NetWare - CHECK LIP/PACKET SIGNING/IPX CHECKSUM SUPPORT???
  4222.     AX = B300h
  4223. Return: AX = 0000h if supported???
  4224. Note:    this function appeared with the packet signing/Large Internet Packets/
  4225.       IPX Checksum-aware NetWare shells
  4226. SeeAlso: AX=B301h,AX=B302h
  4227. --------N-21B301-----------------------------
  4228. INT 21 U - Novell NetWare - CHECK SIGNATURE LEVEL???
  4229.     AX = B301h
  4230. Return: AX = 0000h if supported???
  4231.         BX:CX indicate signature level (see #1454)
  4232. Note:    this function appeared with the packet signing/Large Internet Packets/
  4233.       IPX Checksum-aware NetWare shells
  4234. SeeAlso: AX=B300h,AX=B304h,#2522 at INT 2F/AX=7A20h/BX=0000h
  4235.  
  4236. (Table 1454)
  4237. Values for signature level indicator:
  4238.  0000h:0000h = signature level 0
  4239.  0002h:0000h = signature level 1
  4240.  0202h:0000h = signature level 2
  4241.  0202h:0202h = signature level 3
  4242. --------N-21B302-----------------------------
  4243. INT 21 U - Novell NetWare - START PACKET SIGNING
  4244.     AX = B302h
  4245.     CX = server connection (1-8)
  4246.     DS:SI -> 24-byte buffer containing ???
  4247. Return: ???
  4248. Notes:    this function appeared with the packet signing/Large Internet Packets/
  4249.       IPX Checksum-aware NetWare shells
  4250.     if packet signing is active, this call is required if and only if the
  4251.       last call successfully authenticated the workstation to the server
  4252. SeeAlso: AX=B300h,#2522
  4253. --------N-21B304-----------------------------
  4254. INT 21 U - Novell NetWare - SET SIGNATURE LEVEL
  4255.     AX = B304h
  4256.     BX:CX = new signature level (see AX=B301h)
  4257. Return: ???
  4258. Note:    this function appeared with the packet signing/Large Internet Packets/
  4259.       IPX Checksum-aware NetWare shells
  4260. SeeAlso: AX=B300h,AX=B301h,AX=B306h,#2522
  4261. --------N-21B306-----------------------------
  4262. INT 21 - Novell NetWare - RENEGOTIATE SECURITY LEVEL
  4263.     AX = B306h
  4264.     CX = server connection number (01h-08h)
  4265. Return: ???
  4266. Note:    this function appeared with the packet signing/Large Internet Packets/
  4267.       IPX Checksum-aware NetWare shells
  4268. SeeAlso: AX=B300h,AX=B304h,#2522
  4269. --------N-21B4-------------------------------
  4270. INT 21 U - Novell NetWare - "AttachHandle"
  4271.     AH = B4h
  4272.     DS:SI -> input buffer (see #1455)
  4273. Return: AX = DOS file handle or return code
  4274. Note:    this is an interface provided by NetWare to give DOS file access to
  4275.       NetWare files on non-DOS systems such as Macintosh, OS/2, and Unix
  4276. SeeAlso: AX=E909h
  4277.  
  4278. Format of Novell NetWare input buffer:
  4279. Offset    Size    Description    (Table 1455)
  4280.  00h    BYTE    "WorkFileServer"
  4281.  01h    BYTE    access code
  4282.  02h    DWORD    "OpenHandle"
  4283.  06h    WORD    "OpenHandleCount"
  4284.  08h    DWORD    "OpenFileSize"
  4285. Note:    the six bytes at 02h-07h appear to be the six-byte NetWare handle
  4286.       returned by AX=E909h
  4287. --------N-21B500-----------------------------
  4288. INT 21 U - Novell NetWare - VNETWARE.386 API - GET INSTANCE DATA
  4289.     AX = B500h
  4290. Return: ES:BX -> data
  4291.     CX = length
  4292. SeeAlso: AX=B501h,AX=B502h
  4293. --------N-21B501-----------------------------
  4294. INT 21 U - Novell NetWare - VNETWARE.386 API - END VIRTUAL MACHINE
  4295.     AX = B501h
  4296. SeeAlso: AX=B500h,AX=B502h
  4297. --------N-21B502-----------------------------
  4298. INT 21 U - Novell NetWare - VNETWARE.386 API - START VIRTUAL MACHINE
  4299.     AX = B502h
  4300. SeeAlso: AX=B500h,AX=B501h
  4301. --------N-21B5-------------------------------
  4302. INT 21 - Novell NetWare shell 3.01 - TASK MODE CONTROL
  4303.     AH = B5h
  4304.     AL = subfunction
  4305.         03h get task mode
  4306.         Return: AH = 00h
  4307.             AL = current task mode byte (see #1456)
  4308.         04h get task mode pointer
  4309.         Return: ES:BX -> task mode byte
  4310. Notes:    the task mode byte specifies how task cleanup should be performed, but
  4311.       is declared to be version-dependent
  4312.     allows a program to disable the automatic cleanup for programs managing
  4313.       task swapping, etc.
  4314.  
  4315. (Table 1456)
  4316. Values for NetWare task mode byte in version 3.01:
  4317.  00h-03h reserved
  4318.  04h     no task cleanup
  4319. --------N-21B505-----------------------------
  4320. INT 21 U - Novell NetWare - VNETWARE.386 API - SET VIRTUAL MACHINE ID
  4321.     AX = B505h
  4322.     ???
  4323. Return: ???
  4324. SeeAlso: AX=B502h,AX=B506h
  4325. --------N-21B506-----------------------------
  4326. INT 21 U - Novell NetWare - VNETWARE.386 API - GET VIRTUAL MACH SUPPORT LEVEL
  4327.     AX = B506h
  4328. Return: AX = ??? (0002h)
  4329. SeeAlso: AX=B505h
  4330. --------N-21B507-----------------------------
  4331. INT 21 - Novell NetWare - NetWare Shell - GET NUMBER OF PACKET BURST BUFFERS
  4332.     AX = B507h
  4333. Return: AL = number of packet burst buffers (configured at shell load time)
  4334. --------N-21B6-------------------------------
  4335. INT 21 - Novell NetWare - FILE SERVICES - EXTENDED FILE ATTRIBUTES
  4336.     AH = B6h
  4337.     AL = subfunction
  4338.         00h get extended file attributes
  4339.         01h set extended file attributes
  4340.         CL = extended file attributes (see #1457)
  4341.     DS:DX -> ASCIZ pathname (max 255 bytes)
  4342. Return: CF set on error
  4343.         AL = error code
  4344.         8Ch caller lacks privileges
  4345.         FEh not permitted to search directory
  4346.         FFh file not found
  4347.     CF clear if successful
  4348.         AL = 00h (success)
  4349.         CL = current extended file attributes (see #1457)
  4350. Note:    this function is supported by Advanced NetWare 2.1+
  4351. SeeAlso: AX=4300h,AH=E3h/SF=0Fh
  4352.  
  4353. Bitfields for NetWare extended file attributes:
  4354. Bit(s)    Description    (Table 1457)
  4355.  2-0    search mode (executables only)
  4356.     000 none (use shell's default search)
  4357.     001 search on all opens without path
  4358.     010 do not search
  4359.     011 search on read-only opens without path
  4360.     100 reserved
  4361.     101 search on all opens
  4362.     110 reserved
  4363.     111 search on all read-only opens
  4364.  3    reserved
  4365.  4    transactions on file tracked
  4366.  5    file's FAT indexed
  4367.  6    read audit (to be implemented)
  4368.  7    write audit (to be implemented)
  4369. --------N-21B7-------------------------------
  4370. INT 21 U - Novell NetWare - "HoldFileModeSet" (obsolete)
  4371.     AH = B7h
  4372.     AL = new value for HoldFileFlag
  4373. Return: AL = previous value of HoldFileFlag
  4374. Note:    this function provided backward compatibility with a bug in early
  4375.       DOS versions and CP/M, but is no longer used or supported
  4376. --------I-21B8-------------------------------
  4377. INT 21 - Attachmate Extra! - DISABLE HOST BUFFER UPDATES
  4378.     AH = B8h
  4379.     AL = window number (1-4=host B-E)
  4380.     DL = 01h
  4381. Notes:    only valid in CUT mode
  4382.     next AID keystroke (eg Enter) enables host buffer updates
  4383. SeeAlso: AH=A4h
  4384. --------N-21B800-----------------------------
  4385. INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT CAPTURE FLAGS
  4386.     AX = B800h
  4387.     CX = size of reply buffer (01h-3Fh)
  4388.     ES:BX -> reply buffer for capture flags table (see #1458)
  4389. Return: AL = status
  4390.         00h successful
  4391. Note:    this function is supported by Advanced NetWare 2.0+
  4392. SeeAlso: AX=B801h,AX=B802h,AH=DFh/DL=00h,AH=DFh/DL=04h
  4393.  
  4394. Format of NetWare capture flags table:
  4395. Offset    Size    Description    (Table 1458)
  4396.  00h    BYTE    status (used internally, should be set to 00h)
  4397.  01h    BYTE    print flags (see #1459)
  4398.  02h    BYTE    tab size (01h-12h, default 08h)
  4399.  03h    BYTE    printer number on server (00h-04h, default 00h)
  4400.  04h    BYTE    number of copies to print (00h-FFh, default 01h)
  4401.  05h    BYTE    form type required in printer (default 00h)
  4402.  06h    BYTE    reserved
  4403.  07h 13 BYTEs    text to be placed on banner page
  4404.  14h    BYTE    reserved
  4405.  15h    BYTE    default local printer (00h = LPT1)
  4406.  16h    WORD    (big-endian) timeout in clock ticks for flushing capture file
  4407.           on inactivity, or 0000h to disable timeout
  4408.  18h    BYTE    flush capture file on LPT close if nonzero
  4409.  19h    WORD    (big-endian) maximum lines per page
  4410.  1Bh    WORD    (big-endian) maximum characters per line
  4411.  1Dh 13 BYTEs    name of form required in printer
  4412.  2Ah    BYTE    LPT capture flag
  4413.         00h inactive, FFh LPT device is being captured
  4414.  2Bh    BYTE    file capture flag
  4415.         00h if no file specified, FFh if capturing to file
  4416.  2Ch    BYTE    timing out (00h if no timeout in effect, FFh if timeout counter
  4417.           running)
  4418.  2Dh    DWORD    (big-endian) address of printer setup string
  4419.  31h    DWORD    (big-endian) address of printer reset string
  4420.  35h    BYTE    target connection ID
  4421.  36h    BYTE    capture in progress if FFh
  4422.  37h    BYTE    job queued for printing if FFh
  4423.  38h    BYTE    print job valid if FFh
  4424.  39h    DWORD    bindery object ID of print queue if previous byte FFh
  4425.  3Dh    WORD    (big-endian) print job number (1-999)
  4426.  
  4427. Bitfields for NetWare print flags:
  4428. Bit(s)    Description    (Table 1459)
  4429.  2    print capture file if interrupted by loss of connection
  4430.  3    no automatic form feed after print job
  4431.  6    printing control sequences interpreted by print service
  4432.  7    print banner page before capture file
  4433. --------N-21B801-----------------------------
  4434. INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT CAPTURE FLAGS
  4435.     AX = B801h
  4436.     CX = size of buffer (01h-3Fh)
  4437.     ES:BX -> buffer containing capture flags table (see #1458)
  4438. Return: AL = status
  4439.         00h successful
  4440. Note:    this function is supported by Advanced NetWare 2.0+
  4441. SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
  4442. --------N-21B802-----------------------------
  4443. INT 21 - Novell NetWare - PRINT SERVICES - GET SPECIFIC CAPTURE FLAGS
  4444.     AX = B802h
  4445.     CX = size of reply buffer (01h-3Fh)
  4446.     DH = LPT port (00h-02h)
  4447.     ES:BX -> reply buffer for capture flags table (see #1458)
  4448. Return: AL = status
  4449.         00h successful
  4450. Note:    this function is supported by Advanced NetWare 2.1+
  4451. SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
  4452. --------N-21B803-----------------------------
  4453. INT 21 - Novell NetWare - PRINT SERVICES - SET SPECIFIC CAPTURE FLAGS
  4454.     AX = B803h
  4455.     CX = size of buffer (01h-3Fh)
  4456.     DH = LPT port (00h-02h)
  4457.     ES:BX -> buffer containing capture flags table (see #1458)
  4458. Return: AL = status
  4459.         00h successful
  4460. Note:    this function is supported by Advanced NetWare 2.1+
  4461. SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
  4462. --------N-21B804-----------------------------
  4463. INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT LOCAL PRINTER
  4464.     AX = B804h
  4465. Return: DH = default LPT port (00h-02h)
  4466. Note:    this function is supported by Advanced NetWare 2.1+
  4467. SeeAlso: AX=B800h,AX=B805h,AH=DFh/DL=00h
  4468. --------N-21B805-----------------------------
  4469. INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT LOCAL PRINTER
  4470.     AX = B805h
  4471.     DH = new default LPT port (00h-02h)
  4472. Return: AL = status
  4473.         00h successful
  4474. Note:    this function is supported by Advanced NetWare 2.1+
  4475. SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h
  4476. --------N-21B806-----------------------------
  4477. INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT QUEUE
  4478.     AX = B806h
  4479.     DH = LPT port (00h-02h)
  4480.     BX:CX = print queue's object ID
  4481. Return: AL = status
  4482.         00h successful
  4483.         FFh job already set
  4484. Desc:    specify the print queue on which a print job is to be placed the next
  4485.       time a capture is started on the given printer port
  4486. Note:    this function is supported by Advanced NetWare 2.1+
  4487. SeeAlso: AX=B801h,AX=B807h,AH=E0h/SF=09h
  4488. --------N-21B807-----------------------------
  4489. INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT JOB
  4490.     AX = B807h
  4491.     DH = LPT port (00h-02h)
  4492.     BX = job number (see AH=E3h/SF=68h)
  4493.     SI:DI:CX = NetWare file handle (see AH=E3h/SF=68h)
  4494. Return: AL = status
  4495.         00h successful
  4496.         FFh job already queued
  4497. Desc:    specify the capture file and print job to be used for subsequent
  4498.       output to the given printer port
  4499. Note:    this function is supported by Advanced NetWare 2.1+
  4500. SeeAlso: AX=B801h,AX=B806h,AH=E0h/SF=09h,AH=E3h/SF=68h
  4501. --------N-21B808-----------------------------
  4502. INT 21 - Novell NetWare - PRINT SERVICES - GET BANNER USER NAME
  4503.     AX = B808h
  4504.     ES:BX -> 12-byte buffer for user name
  4505. Return: AL = status
  4506.         00h successful
  4507. Desc:    get the user name which is printed on the banner page
  4508. Notes:    this function is supported by Advanced NetWare 2.1+
  4509.     the default name is the login name of the user
  4510. SeeAlso: AX=B809h
  4511. --------N-21B809-----------------------------
  4512. INT 21 - Novell NetWare - PRINT SERVICES - SET BANNER USER NAME
  4513.     AX = B809h
  4514.     ES:BX -> 12-byte buffer containing user name
  4515. Return: AL = status
  4516.         00h successful
  4517. Desc:    specify the user name which is printed on the banner page
  4518. Notes:    this function is supported by Advanced NetWare 2.1+
  4519.     the default name is the login name of the user
  4520. SeeAlso: AX=B808h
  4521. --------N-21B9-------------------------------
  4522. INT 21 U - Novell NetWare - "SpecialAttachableFunction"
  4523.     AH = B9h
  4524.     AL = FFh to hook this function
  4525.         ES:BX -> function to invoke on AH=B9h when AL<>FFh
  4526. Note:    this function is no longer used or supported by current versions of
  4527.       NetWare
  4528. --------v-21B974-----------------------------
  4529. INT 21 - VIRUS - "Tracker" - INSTALLATION CHECK
  4530.     AX = B974h
  4531. Return: AX = 2888h if resident
  4532. SeeAlso: AH=B3h"VIRUS",AH=D0h"VIRUS"
  4533. --------N-21BA-------------------------------
  4534. INT 21 U - Novell NetWare - "ReturnCommandComPointers"
  4535.     AH = BAh
  4536. Return: DX = environment segment
  4537.     ES:DI -> COMMAND.COM drive
  4538. Desc:    used to edit the COMSPEC and PATH variables in the master environment
  4539.       when mapping network drives
  4540. Note:    this function was documented in older Novell documents which are no
  4541.       longer available
  4542. --------N-21BB-------------------------------
  4543. INT 21 - Novell NetWare - WORKSTATION - SET END OF JOB STATUS
  4544.     AH = BBh
  4545.     AL = new EOJ flag
  4546.         00h disable EOJs
  4547.         01h enable EOJs
  4548. Return: AL = old EOJ flag
  4549. Desc:    specify whether the network shell should automatically generate an
  4550.       End of Job call when the root command processor regains control
  4551. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  4552.       Alloy NTNX
  4553. SeeAlso: AH=19h,AH=D6h
  4554. --------v-21BBBB-----------------------------
  4555. INT 21 - VIRUS - "Hey You" - INSTALLATION CHECK
  4556.     AX = BBBBh
  4557. Return: AX = 6969h
  4558. SeeAlso: AH=ABh"VIRUS",AH=BEh"VIRUS"
  4559. --------N-21BC-------------------------------
  4560. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG PHYSICAL RECORD
  4561.     AH = BCh
  4562.     AL = flags (see #1461)
  4563.     BX = file handle
  4564.     CX:DX = starting offset in file
  4565.     SI:DI = length of region to lock
  4566.     BP = timeout in timer ticks (1/18 sec)
  4567.         0000h = don't wait if already locked
  4568. Return: AL = status (see #1460)
  4569. Desc:    add the specified physical record to the log table, optionally locking
  4570.       it
  4571. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4572.       Alloy NTNX
  4573. SeeAlso: AH=5Ch,AH=BDh,AH=BEh,AH=BFh,AH=C2h,AH=D0h
  4574.  
  4575. (Table 1460)
  4576. Values for NetWare status:
  4577.  00h    successful
  4578.  96h    no dynamic memory for file
  4579.  FEh    timed out
  4580.  FFh    failed
  4581.  
  4582. Bitfields for NetWare flags:
  4583. Bit(s)    Description    (Table 1461)
  4584.  0    lock as well as log record
  4585.  1    non-exclusive lock
  4586. --------N-21BD-------------------------------
  4587. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECORD
  4588.     AH = BDh
  4589.     BX = file handle
  4590.     CX:DX = starting offset in file
  4591.     SI:DI = length of record
  4592. Return: AL = status
  4593.         00h successful
  4594.         FFh record not locked
  4595. Desc:    unlock the specified physical record but do not remove it from log
  4596.       table
  4597. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4598.       Alloy NTNX
  4599. SeeAlso: AH=BCh,AH=BEh"NetWare",AH=C0h,AH=C3h,AH=D2h
  4600. --------N-21BE-------------------------------
  4601. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD
  4602.     AH = BEh
  4603.     BX = file handle
  4604.     CX:DX = starting offset within file
  4605.     SI:DI = record length in bytes
  4606. Return: AL = status
  4607.         00h successful
  4608.         FFh specified record not locked
  4609. Desc:    unlock the physical record and remove it from the log table
  4610. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4611.       Alloy NTNX
  4612. SeeAlso: AH=5Ch,AH=BCh,AH=BDh,AH=C1h,AH=C4h,AH=D4h
  4613. --------v-21BE-------------------------------
  4614. INT 21 - VIRUS - "Datalock" - INSTALLATION CHECK
  4615.     AH = BEh
  4616. Return: AX = 1234h if resident
  4617. SeeAlso: AX=BBBBh,AX=BE00h
  4618. --------v-21BE00-----------------------------
  4619. INT 21 - VIRUS - "USSR-1049" - INSTALLATION CHECK
  4620.     AX = BE00h
  4621.     CF set
  4622. Return: CF clear if resident
  4623. SeeAlso: AH=BEh"VIRUS",AH=C0h"VIRUS"
  4624. --------N-21BF-------------------------------
  4625. INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK RECORD (FCB)
  4626.     AH = BFh
  4627.     AL = flags (see #1461)
  4628.     DS:DX -> opened FCB (see #1000 at AH=0Fh)
  4629.     BX:CX = offset
  4630.     BP = lock timeout in timer ticks (1/18 sec) if AL nonzero
  4631.     SI:DI = length
  4632. Return: AL = error code (see #1460)
  4633. Note:    this function was added in NetWare 4.6, but was removed some time prior
  4634.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4635.       documentation
  4636. SeeAlso: AH=BCh,AH=C0h"NetWare",AH=C2h"NetWare"
  4637. --------N-21C0-------------------------------
  4638. INT 21 O - Novell NetWare, Alloy NTNX - RELEASE RECORD (FCB)
  4639.     AH = C0h
  4640.     DS:DX -> non-extended FCB (see #1000 at AH=0Fh)
  4641.     BX:CX = offset
  4642. Return: AL = error code (see #1460)
  4643. Notes:    unlocks record but does not remove it from log table
  4644.     this function was added in NetWare 4.6, but was removed some time prior
  4645.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4646.       documentation
  4647. SeeAlso: AH=BDh,AH=BFh,AH=C1h"NetWare",AH=C3h
  4648. --------v-21C0-------------------------------
  4649. INT 21 - VIRUS - "Slow"/"Zerotime", "Solano" - INSTALLATION CHECK
  4650.     AH = C0h
  4651. Return: AX = 0300h if "Slow"/"Zerotime" resident
  4652.     AX = 1234h if "Solano" resident
  4653. SeeAlso: AX=BE00h,AX=C000h"VIRUS",AX=C301h"VIRUS"
  4654. --------v-21C000-----------------------------
  4655. INT 21 - VIRUS - "QUICKY" - INSTALLATION CHECK
  4656.     AX = C000h
  4657.     BX = most files infected by any other infected file
  4658. Return: AX = 76F3h if resident
  4659. SeeAlso: AH=C0h"VIRUS",AX=C001h,AX=C002h,AH=C1h"VIRUS"
  4660. --------v-21C001-----------------------------
  4661. INT 21 - VIRUS - "QUICKY" - TURN INFECTION OFF
  4662.     AX = C001h
  4663. Return: nothing
  4664. Note:    if the virus is already memory resident this call disables any
  4665.       further infections
  4666. SeeAlso: AX=C000h,AX=C002h
  4667. --------v-21C002-----------------------------
  4668. INT 21 - VIRUS - "QUICKY" - TURN INFECTION ON
  4669.     AX = C002h
  4670. Return: nothing
  4671. Note:    if the virus is already memory resident and infection is disabled,
  4672.       this call re-enables it
  4673. SeeAlso: AX=C000h,AX=C001h
  4674. --------N-21C1-------------------------------
  4675. INT 21 O - Novell NetWare, Alloy NTNX - CLEAR RECORD (FCB)
  4676.     AH = C1h
  4677.     DS:DX -> opened FCB (see #1000 at AH=0Fh)
  4678.     BX:CX = offset
  4679. Return: AL = error code (see #1460)
  4680. Note:    unlocks record and removes it from log table
  4681.     this function was added in NetWare 4.6, but was removed some time prior
  4682.       to Advanced NetWare, and is no longer listed in current Novell
  4683.       documentation
  4684. SeeAlso: AH=BEh,AH=C0h"NetWare",AH=C4h
  4685. --------v-21C1-------------------------------
  4686. INT 21 - VIRUS - "Solano" - ???
  4687.     AH = C1h
  4688.     ???
  4689. Return: ???
  4690. SeeAlso: AH=C0h"VIRUS"
  4691. --------N-21C2-------------------------------
  4692. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK PHYSICAL RECORD SET
  4693.     AH = C2h
  4694.     AL = flags
  4695.         bit 1: non-exclusive lock
  4696.     BP = lock timeout in timer ticks (1/18 sec) 0000h = no wait
  4697. Return: AL = status
  4698.         00h successful
  4699.         FEh timed out
  4700.         FFh failed
  4701. Desc:    attempt to lock all physical records listed in the log table
  4702. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4703.       Alloy NTNX
  4704.     status FFh will be returned if one or more physical records have been
  4705.       exclusively locked by another process
  4706. SeeAlso: AH=BFh,AH=C3h,AH=D1h
  4707. --------v-21C2-------------------------------
  4708. INT 21 - VIRUS - "Scott's Valley" - ???
  4709.     AH = C2h
  4710.     ???
  4711. Return: ???
  4712. SeeAlso: AH=C0h"VIRUS"
  4713. --------N-21C3-------------------------------
  4714. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYS RECORD SET
  4715.     AH = C3h
  4716. Desc:    unlock all currently-locked physical records in the log table, but do
  4717.       not remove them from the table
  4718. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4719.       Alloy NTNX
  4720. SeeAlso: AH=BDh,AH=C0h,AH=C2h"NetWare",AH=C4h,AH=D3h
  4721. --------v-21C301DXF1F1-----------------------
  4722. INT 21 - VIRUS - "905"/"Backfont" - INSTALLATION CHECK
  4723.     AX = C301h
  4724.     DX = F1F1h
  4725. Return: DX = 0E0Eh if resident
  4726. SeeAlso: AH=C0h"VIRUS",AX=C500h"VIRUS"
  4727. --------N-21C4-------------------------------
  4728. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD SET
  4729.     AH = C4h
  4730. Desc:    unlock all physical records in the log table and remove them from the
  4731.       log table
  4732. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4733.       Alloy NTNX
  4734. SeeAlso: AH=BEh,AH=C1h,AH=D5h
  4735. --------N-21C500-----------------------------
  4736. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - OPEN SEMAPHORE
  4737.     AX = C500h
  4738.     DS:DX -> semaphore name (counted string, max 127 bytes)
  4739.     CL = initial value for semaphore
  4740. Return: AL = status
  4741.         00h successful
  4742.         BL = number of processes having semaphore open
  4743.         CX:DX = semaphore handle
  4744.         03h name length greater than 127
  4745.         (refer to Novell document FYI.A.4611)
  4746.         FEh invalid name length
  4747.         FFh invalid semaphore value
  4748. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4749.       Alloy NTNX
  4750.     the semaphore's value is incremented by AX=C503h and decremented by
  4751.       AX=C502h
  4752. SeeAlso: AX=C501h,AX=C502h,AX=C503h,AX=C504h,AX=F220h/SF=00h
  4753. --------v-21C500-----------------------------
  4754. INT 21 - VIRUS - "Sverdlov" - INSTALLATION CHECK
  4755.     AX = C500h
  4756. Return: AX = 6731h if resident
  4757. SeeAlso: AX=C301h"VIRUS",AH=C6h"VIRUS"
  4758. --------N-21C501-----------------------------
  4759. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - EXAMINE SEMAPHORE
  4760.     AX = C501h
  4761.     CX:DX = semaphore handle
  4762. Return: AL = status
  4763.         00h successful
  4764.         CX = semaphore value (-127 to 127)
  4765.         DL = count of processes which have the semaphore open
  4766.         FFh invalid handle
  4767. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4768.       Alloy NTNX
  4769. SeeAlso: AX=C500h"NetWare",AX=C502h,AX=C504h,AX=F220h/SF=01h
  4770. --------N-21C502-----------------------------
  4771. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - WAIT ON SEMAPHORE
  4772.     AX = C502h
  4773.     CX:DX = semaphore handle
  4774.     BP = timeout limit in timer ticks (1/18 sec)
  4775.         0000h return immediately if semaphore already zero or negative
  4776. Return: AL = status
  4777.         00h successful
  4778.         FEh timeout
  4779.         FFh invalid handle
  4780. Desc:    decrement the semaphore's value, optionally waiting until its value
  4781.       becomes positive before decrementing
  4782. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4783.       Alloy NTNX
  4784. SeeAlso: AX=C500h"NetWare",AX=C501h,AX=C503h,AX=F220h/SF=02h
  4785. --------N-21C503-----------------------------
  4786. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - SIGNAL SEMAPHORE
  4787.     AX = C503h
  4788.     CX:DX = semaphore handle
  4789. Return: AL = status
  4790.         00h successful
  4791.         01h semaphore value overflowed
  4792.         FFh invalid handle
  4793. Desc:    increment the semaphore's value and signal the first process (if any)
  4794.       in the queue waiting on the semaphore
  4795. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4796.       Alloy NTNX
  4797. SeeAlso: AX=C500h"NetWare",AX=C502h,AX=F220h/SF=03h
  4798. --------N-21C504-----------------------------
  4799. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLOSE SEMAPHORE
  4800.     AX = C504h
  4801.     CX:DX = semaphore handle
  4802. Return: AL = status
  4803.         00h successful
  4804.         FFh invalid handle
  4805. Desc:    decrement the semaphore's open count, and delete the semaphore if the
  4806.       count reaches zero
  4807. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4808.       Alloy NTNX
  4809. SeeAlso: AX=C500h"NetWare",AX=C501h,AX=F220h/SF=04h
  4810. --------N-21C6-------------------------------
  4811. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - GET OR SET LOCK MODE
  4812.     AH = C6h
  4813.     AL = subfunction
  4814.         00h set old "compatibility" mode (default)
  4815.         01h set new extended locks mode
  4816.         02h get lock mode
  4817. Return: AL = current lock mode
  4818. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4819.       Alloy NTNX
  4820.     the locking mode should be 01h for NetWare 4.61+ and Advanced
  4821.       NetWare 1.0+ locking calls, and 00h for all older calls
  4822. SeeAlso: AH=BCh,AH=C4h,AH=D0h
  4823. --------v-21C6-------------------------------
  4824. INT 21 - VIRUS - "Socha" - INSTALLATION CHECK
  4825.     AH = C6h
  4826. Return: AL = 55h if resident
  4827. SeeAlso: AX=C500h"VIRUS",AX=C603h
  4828. --------v-21C603-----------------------------
  4829. INT 21 - VIRUS - "Yankee Doodle" or "MLTI" - INSTALLATION CHECK
  4830.     AX = C603h
  4831.     BX = version number (002Ch or 002Dh)
  4832.     CF set
  4833. Return: CF clear if resident
  4834.     ZF set if resident and input BX matches version
  4835. SeeAlso: AX=C500h"VIRUS",AX=C700h"VIRUS"
  4836. --------N-21C700-----------------------------
  4837. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - BEGIN TRANSACTION
  4838.     AX = C700h
  4839. Return: CF clear if successful
  4840.         AL = 00h
  4841.     CF set on error
  4842.         AL = error code
  4843.         96h out of memory
  4844.         FEh implicit transaction already active, converted to explicit
  4845.         FFh explicit transaction already active
  4846. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4847. SeeAlso: AX=C701h,AX=C702h,AX=C703h,AX=F222h/SF=01h
  4848. --------v-21C700-----------------------------
  4849. INT 21 - VIRUS - "MH-757" - INSTALLATION CHECK
  4850.     AX = C700h
  4851. Return: AL = 07h if resident
  4852. SeeAlso: AX=C603h"VIRUS",AH=CBh"VIRUS"
  4853. --------N-21C701-----------------------------
  4854. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - END TRANSACTION
  4855.     AX = C701h
  4856. Return: AL = status (00h,FDh-FFh) (see #1462)
  4857.         00h successful
  4858.         CX:DX = transaction number
  4859.     CF clear except when AL=FFh
  4860. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4861. SeeAlso: AX=C700h"NetWare",AX=C703h,AX=F222h/SF=02h
  4862.  
  4863. (Table 1462)
  4864. Values for NetWare TTS status:
  4865.  00h    successful
  4866.  FDh    transaction tracking disabled
  4867.  FEh    transaction ended records locked
  4868.  FFh    no explicit transaction active
  4869. --------N-21C702-----------------------------
  4870. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - INSTALLATION CHECK
  4871.     AX = C702h
  4872. Return: AL = status
  4873.         00h not available
  4874.         01h available
  4875.         FDh available but disabled
  4876. Desc:    determine whether the default file server supports TTS
  4877. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4878. SeeAlso: AX=C700h,AX=C701h,AX=C703h,AX=F222h/SF=00h
  4879. --------N-21C703-----------------------------
  4880. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - ABORT TRANSACTION
  4881.     AX = C703h
  4882. Return: CF clear if successful
  4883.         AL = 00h
  4884.     CF set on error
  4885.         AL = error code (FDh-FFh) (see #1462)
  4886. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4887. SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C704h,AX=F222h/SF=03h
  4888. --------N-21C704-----------------------------
  4889. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - TRANSACTION STATUS
  4890.     AX = C704h
  4891.     CX:DX = transaction number (see AX=C701h)
  4892. Return: AL = status
  4893.         00h successful
  4894.         FFh not yet written to disk
  4895. Desc:    verify that a transaction has actually been written to disk
  4896. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4897.     transactions are written to disk in the order in which they are ended,
  4898.       but it may take as much as five seconds for the data to be written
  4899. SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C703h,AX=F222h/SF=04h
  4900. --------N-21C705-----------------------------
  4901. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET APPLICTN THRESHOLDS
  4902.     AX = C705h
  4903. Return: AL = status
  4904.         00h successful
  4905.     CL = maximum logical record locks (default 0)
  4906.     CH = maximum physical record locks (default 0)
  4907. Desc:    get the per-application limits on record locks allowed before an
  4908.       implicit transaction is begun
  4909. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4910.     if either limit is FFh, implicit transactions are disabled for the
  4911.       corresponding lock type
  4912. SeeAlso: AX=C706h,AX=C707h,AX=F222h/SF=05h
  4913. --------N-21C706-----------------------------
  4914. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET APPLICTN THRESHOLDS
  4915.     AX = C706h
  4916.     CL = maximum logical record locks (default 0)
  4917.     CH = maximum physical record locks (default 0)
  4918. Return: AL = status
  4919.         00h successful
  4920. Desc:    specify the per-application limits on record locks allowed before an
  4921.       implicit transaction is begun
  4922. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4923.     if either limit is set to FFh, implicit transactions are disabled for
  4924.       the corresponding lock type
  4925. SeeAlso: AX=C705h,AX=C708h,AX=F222h/SF=06h
  4926. --------N-21C707-----------------------------
  4927. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET WORKSTN THRESHOLDS
  4928.     AX = C707h
  4929. Return: AL = status
  4930.         00h successful
  4931.     CL = maximum logical record locks (default 0)
  4932.     CH = maximum physical record locks (default 0)
  4933. Desc:    get the per-workstation limits on record locks allowed before an
  4934.       implicit transaction is begun
  4935. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4936.     if either limit is FFh, implicit transactions are disabled for the
  4937.       corresponding lock type
  4938. SeeAlso: AX=C705h,AX=C708h,AX=F222h/SF=07h
  4939. --------N-21C708-----------------------------
  4940. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET WORKSTN THRESHOLDS
  4941.     AX = C708h
  4942.     CL = maximum logical record locks (default 0)
  4943.     CH = maximum physical record locks (default 0)
  4944. Return: AL = status
  4945.         00h successful
  4946. Desc:    specify the per-workstation limits on record locks allowed before an
  4947.       implicit transaction is begun
  4948. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4949.     if either limit is set to FFh, implicit transactions are disabled for
  4950.       the corresponding lock type
  4951. SeeAlso: AX=C706h,AX=C707h,AX=F222h/SF=08h
  4952. --------N-21C8-------------------------------
  4953. INT 21 O - Novell NetWare - BEGIN LOGICAL FILE LOCKING
  4954.     AH = C8h
  4955.     if function C6h lock mode 00h:
  4956.         DL = mode
  4957.         00h no wait
  4958.         01h wait
  4959.     if function C6h lock mode 01h:
  4960.         BP = timeout in timer ticks (1/18 sec)
  4961. Return: AL = error code
  4962. Desc:    used to provide TTS support for applications which are not aware of
  4963.       Novell's Transaction Tracking System
  4964. Note:    this function was added in NetWare 4.0, but was removed some time prior
  4965.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4966.       documentation
  4967. SeeAlso: AH=C9h
  4968. --------N-21C9-------------------------------
  4969. INT 21 O - Novell NetWare - END LOGICAL FILE LOCKING
  4970.     AH = C9h
  4971. Return: AL = error code
  4972. Desc:    used to provide TTS support for applications which are not aware of
  4973.       Novell's Transaction Tracking System
  4974. Note:    this function was added in NetWare 4.0, but was removed some time prior
  4975.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4976.       documentation
  4977. SeeAlso: AH=C8h
  4978. --------N-21CA-------------------------------
  4979. INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK PERSONAL FILE (FCB)
  4980.     AH = CAh
  4981.     DS:DX -> FCB (see #1000 at AH=0Fh)
  4982.     if function C6h lock mode 01h:
  4983.         AL = log and lock flag
  4984.         00h log file only
  4985.         01h lock as well as log file
  4986.         BP = lock timeout in timer ticks (1/18 sec)
  4987. Return: AL = error code
  4988.         00h successful
  4989.         96h no dynamic memory for file
  4990.         FEh timeout
  4991.         FFh failed
  4992. Desc:    provides file locking support for FCBs
  4993. Note:    this function was added in NetWare 4.0, but was removed some time prior
  4994.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4995.       documentation
  4996. SeeAlso: AH=CBh
  4997. --------v-21CA15-----------------------------
  4998. INT 21 - VIRUS - "Piter" - ???
  4999.     AX = CA15h
  5000.     ???
  5001. Return: ???
  5002. SeeAlso: AH=CCh"VIRUS"
  5003. --------N-21CB-------------------------------
  5004. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK FILE SET
  5005.     AH = CBh
  5006.     if function C6h lock mode 00h:
  5007.         DL = mode (00h no wait, 01h wait)
  5008.     if function C6h lock mode 01h:
  5009.         BP = lock timeout in timer ticks (1/18 sec), 0000h = no wait
  5010. Return: AL = status (00h,FEh,FFh) (see #1463)
  5011. Desc:    attempt to lock all files listed in the log table
  5012. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5013.       Alloy NTNX
  5014.     status FFh will be returned if one or more of the files have already
  5015.       been exclusively locked by another process
  5016. SeeAlso: AH=CAh,AH=CDh,AH=D1h,AH=EBh
  5017.  
  5018. (Table 1463)
  5019. Values for NetWare status:
  5020.  00h    successful
  5021.  FEh    timed out
  5022.  FFh    failed
  5023. --------v-21CB-------------------------------
  5024. INT 21 - VIRUS - "Milous" - INSTALLATION CHECK
  5025.     AH = CBh
  5026. Return: AL = 07h if resident
  5027. SeeAlso: AX=C700h"VIRUS",AX=CB02h
  5028. --------v-21CB02-----------------------------
  5029. INT 21 - VIRUS - "Witcode" - INSTALLATION CHECK
  5030.     AX = CB02h
  5031. Return: AX = 02CBh if resident
  5032. SeeAlso: AH=CBh"VIRUS",AH=CCh"VIRUS"
  5033. --------N-21CC-------------------------------
  5034. INT 21 O - Novell NetWare, Alloy NTNX - RELEASE FILE (FCB)
  5035.     AH = CCh
  5036.     DS:DX -> FCB (see #1000 at AH=0Fh)
  5037. Return: none
  5038. Desc:    unlocks file, but does not remove it from the log table or close it
  5039. Note:    this function was added in NetWare 4.0, but was removed some time prior
  5040.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  5041.       documentation
  5042. SeeAlso: AH=CAh,AH=CDh
  5043. --------v-21CC-------------------------------
  5044. INT 21 - VIRUS - "Westwood" - INSTALLATION CHECK
  5045.     AH = CCh
  5046. Return: AX = 0700h if resident
  5047. SeeAlso: AX=CB02h,AH=CDh"VIRUS",AX=D000h"VIRUS"
  5048. --------N-21CD-------------------------------
  5049. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE SET
  5050.     AH = CDh
  5051. Return: none
  5052. Desc:    unlock all files listed in the log table, but don't remove them from
  5053.       the table
  5054. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5055.       Alloy NTNX
  5056. SeeAlso: AH=CBh,AH=CCh,AH=CFh,AH=D3h
  5057. --------v-21CD-------------------------------
  5058. INT 21 - VIRUS - "Westwood" - ???
  5059.     AH = CDh
  5060.     ???
  5061. Return: ???
  5062. SeeAlso: AH=CCh"VIRUS"
  5063. --------N-21CE-------------------------------
  5064. INT 21 O - Novell NetWare, Alloy NTNX - CLEAR FILE (FCB)
  5065.     AH = CEh
  5066.     DS:DX -> FCB (see #1000 at AH=0Fh)
  5067. Return: AL = error code
  5068. Desc:    unlocks file and removes it from log table, then closes all opened and
  5069.       logged occurrences
  5070. Note:    this function was added in NetWare 4.0, but was removed some time prior
  5071.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  5072.       documentation
  5073. SeeAlso: AH=CAh,AH=CFh,AH=EDh"NetWare"
  5074. --------N-21CF-------------------------------
  5075. INT 21 - LANstep - ???
  5076.     AH = CFh
  5077.     ???
  5078. Return: ???
  5079. Program: LANstep is a redesign of the Waterloo Microsystems PORT network
  5080. --------N-21CF-------------------------------
  5081. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE SET
  5082.     AH = CFh
  5083. Return: AL = 00h
  5084. Desc:    unlock and remove all files from log table
  5085. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5086.       Alloy NTNX
  5087. SeeAlso: AH=CAh,AH=CEh,AH=EBh"NetWare"
  5088. --------N-21D0-------------------------------
  5089. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG LOGICAL RECORD
  5090.     AH = D0h
  5091.     DS:DX -> record string (counted string, max 99 data bytes)
  5092.     if function C6h lock mode 01h: (Novell, NTNX only)
  5093.         AL = flags
  5094.         bit 0: lock as well as log the record
  5095.         bit 1: non-exclusive lock
  5096.         BP = lock timeout in timer ticks (1/18 sec)
  5097. Return: AL = status
  5098.         00h successful
  5099.         96h no dynamic memory for file
  5100.         FEh timed out
  5101.         FFh unsuccessful
  5102. Desc:    add the specified logical record name to the log table, and optionally
  5103.       lock the record
  5104. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
  5105.       Banyan VINES, and Alloy NTNX
  5106.     locks on logical record names are advisory and may be ignored by other
  5107.       applications
  5108. SeeAlso: AH=BCh,AH=D1h,AH=D2h,AH=D4h,AH=EBh
  5109. --------v-21D0-------------------------------
  5110. INT 21 - VIRUS - "MALAGA" - INSTALLATION CHECK
  5111.     AH = D0h
  5112. Return: AX = 00D0h if resident
  5113. SeeAlso: AH=B3h"VIRUS",AH=D0h"ANTIARJ",AX=D000h"VIRUS"
  5114. --------v-21D0-----------------------------
  5115. INT 21 - VIRUS - "ANTIARJ" -INSTALLATION CHECK
  5116.     AH = D0h
  5117. Return: AH = D1h if resident
  5118. SeeAlso: AH=D0h"MALAGA"
  5119. --------v-21D000-----------------------------
  5120. INT 21 - VIRUS - "Fellowship" - INSTALLATION CHECK
  5121.     AX = D000h
  5122. Return: BX = 1234h if resident
  5123. SeeAlso: AH=CCh"VIRUS",AH=D0h"ANTIARJ",AX=D000h"Warlock",AH=D5h"VIRUS",AX=D5AAh
  5124. --------v-21D000-----------------------------
  5125. INT 21 - VIRUS - "Warlock" - INSTALLATION CHECK
  5126.     AX = D000h
  5127.     CF clear
  5128. Return: CF set if resident (normal DOS return would be CF clear)
  5129. SeeAlso: AX=D000h"VIRUS",AH=D5h"VIRUS"
  5130. --------N-21D1-------------------------------
  5131. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK LOGICAL RECORD SET
  5132.     AH = D1h
  5133.     AL = lock type (00h exclusive, 01h shareable)
  5134.     if function C6h lock mode 00h:
  5135.         DL = mode (00h no wait, 01h wait)
  5136.     if function C6h lock mode 01h: (Novell only)
  5137.         BP = lock timeout in timer ticks (1/18 sec), 0000h no wait
  5138. Return: AL = status (see #1463)
  5139. Desc:    attempt to lock all logical record names listed in the log table
  5140. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
  5141.       Banyan VINES, and Alloy NTNX
  5142.     status FFh will be returned if one or more logical records have been
  5143.       exclusively locked by another process
  5144.     locks on logical record names are advisory and may be ignored by other
  5145.       applications
  5146. SeeAlso: AH=C2h,AH=CBh,AH=D0h,AH=D3h,AH=D5h
  5147. --------N-21D2-------------------------------
  5148. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD
  5149.     AH = D2h
  5150.     DS:DX -> semaphore identifier (counted string up to 99 chars long)
  5151. Return: AL = status
  5152.         00h successful
  5153.         FFh no such record
  5154. Desc:    unlock the logical record name but do not remove it from the log table
  5155. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  5156.       Banyan VINES, and Alloy NTNX
  5157.     locks on logical record names are advisory and may be ignored by other
  5158.       applications
  5159. SeeAlso: AH=BDh,AH=D0h,AH=D3h,AH=D4h
  5160. --------v-21D2-------------------------------
  5161. INT 21 - VIRUS???
  5162.     AH = D2h
  5163.     ???
  5164. Return: ???
  5165. Note:    this call is intercepted by the Search&Destroy SDRes v27.03 bundled
  5166.       with Novell DOS 7, and is presumably some virus's installation check
  5167. SeeAlso: AH=4Ah/BX=00B6h
  5168. --------N-21D3-------------------------------
  5169. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD SET
  5170.     AH = D3h
  5171. Desc:    unlock all currently-locked logical record names in the log table, but
  5172.       do not remove them from the table
  5173. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  5174.       Banyan VINES, and Alloy NTNX
  5175.     locks on logical record names are advisory and may be ignored by other
  5176.       applications
  5177. SeeAlso: AH=C3h,AH=CDh,AH=D1h,AH=D2h,AH=D5h
  5178. --------N-21D4-------------------------------
  5179. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD
  5180.     AH = D4h
  5181.     DS:DX -> logical record name (counted string up to 99 chars long)
  5182. Return: AL = status (00h,FFh) (see #1464)
  5183. Desc:    unlock and remove the logical record name from the log table
  5184. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  5185.       Banyan VINES, and Alloy NTNX
  5186.     locks on logical record names are advisory and may be ignored by other
  5187.       applications
  5188. SeeAlso: AH=BEh,AH=D0h,AH=D2h,AH=D5h
  5189.  
  5190. (Table 1464)
  5191. Values for NetWare status:
  5192.  00h    successful
  5193.  FFh    no such record name
  5194. --------N-21D5-------------------------------
  5195. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD SET
  5196.     AH = D5h
  5197. Return: AL = error code (00h,FFh) (see #1464)
  5198. Desc:    unlock and remove all logical record name from the log table
  5199. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  5200.       Banyan VINES, and Alloy NTNX
  5201.     locks on logical record names are advisory and may be ignored by other
  5202.       applications
  5203. SeeAlso: AH=D1h,AH=D3h,AH=D4h
  5204. --------v-21D5-------------------------------
  5205. INT 21 - VIRUS - "Carfield" - ???
  5206.     AH = D5h
  5207.     ???
  5208. Return: ???
  5209. SeeAlso: AX=D5AAh,AH=F3h"Carfield"
  5210. --------v-21D5AA-----------------------------
  5211. INT 21 - VIRUS - "Diamond-A", "Diamond-B" - INSTALLATION CHECK
  5212.     AX = D5AAh
  5213. Return: AX = 2A55h if "Diamond-A" resident
  5214.     AX = 2A03h if "Diamond-B"-family virus resident
  5215. SeeAlso: AX=D000h,AH=D5h"VIRUS",AX=D5AAh/BP=DEAAh
  5216. --------v-21D5AABPDEAA-----------------------
  5217. INT 21 - VIRUS - "Dir" - INSTALLATION CHECK
  5218.     AX = D5AAh
  5219.     BP = DEAAh
  5220. Return: SI = 4321h if resident
  5221. SeeAlso: AX=D5AAh,AX=DADAh"VIRUS"
  5222. --------N-21D6-------------------------------
  5223. INT 21 - Novell NetWare - WORKSTATION - END OF JOB
  5224.     AH = D6h
  5225.     BX = job flag (0000h current job, FFFFh all processes on workstation)
  5226. Return: AL = error code
  5227. Desc:    unlocks and clears all locked or logged files and records held by the
  5228.       process(es), closes all files, resets error and lock modes, and
  5229.       releases all network resources
  5230. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5231.       Alloy NTNX
  5232. SeeAlso: AH=BBh"NetWare",AH=D7h
  5233. --------N-21D7-------------------------------
  5234. INT 21 - Novell NetWare - CONNECTION SERVICES - SYSTEM LOGOUT
  5235.     AH = D7h
  5236. Return: AL = error code
  5237. Desc:    this function closes the caller's open files, logs it out from all
  5238.       file servers, detaches the workstation from all non-default file
  5239.       servers, and maps a drive to the default server's SYS:LOGIN directory
  5240. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5241.       Alloy NTNX
  5242. SeeAlso: AH=D6h,AH=E3h/SF=14h,AH=F1h"NetWare"
  5243. --------N-21D8-------------------------------
  5244. INT 21 - Novell NetWare, Banyan VINES - ALLOCATE RESOURCE
  5245.     AH = D8h
  5246.     DL = resource number
  5247. Return: AL = status (00h successful, FFh unsucessful)
  5248. Note:    this function is no longer used or supported by NetWare, and is not
  5249.       documented in Novell documents
  5250. SeeAlso: AH=D9h
  5251. --------N-21D9-------------------------------
  5252. INT 21 - Novell NetWare, Banyan VINES - DEALLOCATE RESOURCE
  5253.     AH = D9h
  5254.     DL = resource number
  5255. Return: AL = status (00h successful, FFh unsucessful)
  5256. Note:    this function is no longer used or supported by NetWare, and is not
  5257.       documented in Novell documents
  5258. SeeAlso: AH=D8h
  5259. --------N-21DA-------------------------------
  5260. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH NUMBER
  5261.     AH = DAh
  5262.     DL = volume number
  5263.     ES:DI -> reply buffer (see #1465)
  5264. Return: AL = 00h
  5265. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5266.     operator console rights are not required to make this call
  5267.     reported total blocks and total unused blocks include the Hot Fix
  5268.       Table; the NetWare shell's implementation of INT 21/AH=36h will
  5269.       report values larger than 268MB as 268MB.
  5270. SeeAlso: AH=36h,AH=E2h/SF=15h,AH=E3h/SF=E9h
  5271.  
  5272. Format of NetWare reply buffer:
  5273. Offset    Size    Description    (Table 1465)
  5274.  00h    WORD    sectors/block
  5275.  02h    WORD    total blocks on volume
  5276.  04h    WORD    unused blocks
  5277.  06h    WORD    total directory entries
  5278.  08h    WORD    unused directory entries
  5279.  0Ah 16 BYTEs    volume name, null padded
  5280.  1Ah    WORD    removable flag, 0000h = not removable
  5281. Note:    all words are big-endian
  5282. --------v-21DADA-----------------------------
  5283. INT 21 - VIRUS - "Gotcha" - INSTALLATION CHECK
  5284.     AX = DADAh
  5285. Return: AH = A5h
  5286. SeeAlso: AX=D5AAh,AX=DAFEh"VIRUS"
  5287. --------v-21DAFE-----------------------------
  5288. INT 21 - VIRUS - "Plovdiv 1.3" - INSTALLATION CHECK
  5289.     AX = DAFEh
  5290. Return: AX = 1234h if resident
  5291. SeeAlso: AX=DADAh,AH=DDh"VIRUS",AH=DEh"VIRUS"
  5292. --------N-21DB-------------------------------
  5293. INT 21 - Novell NetWare - WORKSTATION - GET NUMBER OF LOCAL DRIVES
  5294.     AH = DBh
  5295. Return: AL = number of local disks as set by LASTDRIVE in CONFIG.SYS
  5296. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5297.       Alloy NTNX
  5298. SeeAlso: AH=0Eh
  5299. --------N-21DC-------------------------------
  5300. INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION NUMBER
  5301.     AH = DCh
  5302. Return: AL = logical connection number
  5303.         00h if NetWare not loaded or this machine is a non-dedicated server
  5304.     CX = station number in ASCII (CL = first digit)
  5305. Notes:    this function is supported by NetWare 4.0+, Banyan VINES, and Alloy
  5306.       NTNX
  5307.     station number only unique for those PCs connected to same semaphore
  5308.       service
  5309. SeeAlso: AH=F2h"NetWare"
  5310. --------d-21DC-------------------------------
  5311. INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
  5312.     AH = DCh
  5313.     DX = state
  5314.         0000h turn on
  5315.         0001h turn off
  5316. SeeAlso: AX=FEDCh
  5317. --------v-21DC28-----------------------------
  5318. INT 21 - VIRUS - "Monika" - INSTALLATION CHECK
  5319.     AX = DC28h
  5320. Return: AX = 1973h if resident
  5321. SeeAlso: AX=D000h"VIRUS",AX=DCBAh"VIRUS"
  5322. --------v-21DCBA-----------------------------
  5323. INT 21 - VIRUS - "Red Spider" - INSTALLATION CHECK
  5324.     AX = DCBAh
  5325. Return: AX = ABCDh if resident
  5326. SeeAlso: AX=DC28h"VIRUS",AX=DEFEh"VIRUS"
  5327. --------N-21DD-------------------------------
  5328. INT 21 - Novell NetWare - WORKSTATION - SET NetWare ERROR MODE
  5329.     AH = DDh
  5330.     DL = error mode
  5331.         00h invoke INT 24 on critical I/O errors (default)
  5332.         01h return NetWare extended error code in AL
  5333.         02h return error code in AL, mapped to standard DOS error codes
  5334. Return: AL = previous error mode
  5335. Note:    this function is supported by Advanced NetWare 2.0+
  5336. SeeAlso: INT 24
  5337. --------v-21DD-------------------------------
  5338. INT 21 - VIRUS - "Jerusalem"-family - RELOCATE VIRUS???
  5339.     AH = DDh
  5340.     CX = number of bytes to copy
  5341.     DS:SI -> source of copy
  5342.     ES:DI -> destination of copy
  5343. Return: does not return normally; return address is caller's CS:0100h with
  5344.       AX = ???
  5345. SeeAlso: AX=DDEFh,AH=E0h"VIRUS",AH=EEh"VIRUS"
  5346. --------v-21DDEF------------------------
  5347. INT 21 - VIRUS- "GOLGI" - INSTALLATION CHECK
  5348.     AX = DDEFh
  5349. Return: AX = EFDDh if resident
  5350. SeeAlso: AH=DDh"VIRUS",AH=DEh"VIRUS"
  5351. --------v-21DE-------------------------------
  5352. INT 21 - VIRUS - "Durban" - INSTALLATION CHECK
  5353.     AH = DEh
  5354. Return: AH = DFh if resident
  5355. SeeAlso: AX=DAFEh,AX=DDEFh,AH=DEh"April 1st",AX=DEADh"90210"
  5356. --------v-21DE-------------------------------
  5357. INT 21 - VIRUS - "April 1st EXE" - ???
  5358.     AH = DEh
  5359.     ???
  5360. Return: ???
  5361. SeeAlso: AH=DEh"Durban",AX=DEADh"90210"
  5362. --------N-21DE-------------------------------
  5363. INT 21 - Novell NetWare - MESSAGE SERVICES - SET BROADCAST MODE
  5364.     AH = DEh
  5365.     DL = broadcast mode
  5366.         00h receive server and workstation broadcasts (default)
  5367.         01h receive server broadcasts, discard user messages
  5368.         02h store server broadcasts for retrieval
  5369.         03h store all broadcasts for retrieval
  5370. Return: AL = new broadcast mode
  5371. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5372. --------N-21DE--DL04-------------------------
  5373. INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MODE
  5374.     AH = DEh
  5375.     DL = 04h
  5376. Return: AL = current broadcast mode
  5377.         00h receive server and workstation broadcasts (default)
  5378.         01h receive server broadcasts, discard user message
  5379.         02h store server broadcasts for retrieval
  5380.         03h store all broadcasts for retrieval
  5381. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5382. --------N-21DE-------------------------------
  5383. INT 21 - Novell NetWare - SHELL TIMER INTERRUPT CHECKS
  5384.     AH = DEh
  5385.     DL = function
  5386.         05h disable shell timer interrupt checks
  5387.         06h enable shell timer interrupt checks
  5388. Return: ???
  5389. Note:    this function was added in NetWare 4.0, but is not listed in current
  5390.       Novell documentation and is probably no longer supported
  5391. --------v-21DEAD------------------------
  5392. INT 21 - VIRUS - "90210" - INSTALLATION CHECK
  5393.     AX = DEADh
  5394. Return: AX = AAAAh if resident
  5395. SeeAlso: AH=DEh"April 1st",AX=DEADh"Shifting",AX=DEDEh"VIRUS"
  5396. --------v-21DEAD------------------------
  5397. INT 21 - VIRUS - "Shifting Objective" - RELOCATE CODE ???
  5398.     AX = DEADh
  5399. SeeAlso: AX=FEADh
  5400. SeeAlso: AX=DEADh"90210",AX=DEDEh"VIRUS"
  5401. --------v-21DEDE-----------------------------
  5402. INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
  5403.     AX = DEDEh
  5404. Return: AH = 41h if resident
  5405. SeeAlso: AX=DEADh"Shifting",AX=DEFEh"VIRUS"
  5406. --------v-21DEFE-----------------------------
  5407. INT 21 - VIRUS - "Maze" - INSTALLATION CHECK
  5408.     AX = DEFEh
  5409. Return: AX = ABCDh if resident
  5410. SeeAlso: AX=DCBAh"VIRUS",AX=DEDEh"VIRUS",AH=E0h"VIRUS"
  5411. --------N-21DF--DL00-------------------------
  5412. INT 21 - Novell NetWare - PRINT SERVICES - START LPT CAPTURE
  5413.     AH = DFh
  5414.     DL = 00h
  5415. Return: AL = status
  5416.         00h successful
  5417. Desc:    this function redirects the default LPT to a capture file on the file
  5418.       server
  5419. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5420.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  5421.     a print job is queued when the first character of output is captured
  5422. SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=03h
  5423. SeeAlso: AH=DFh/DL=04h,AX=F003h
  5424. --------N-21DF--DL01-------------------------
  5425. INT 21 - Novell NetWare - PRINT SERVICES - END LPT CAPTURE
  5426.     AH = DFh
  5427.     DL = 01h
  5428. Return: AL = status
  5429.         00h successful
  5430. Desc:    stop redirecting the default LPT, close the capture file, and release
  5431.       the job in the print queue for printing
  5432. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5433.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  5434.     after this call, the default LPT defaults to local printing
  5435. SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=02h,AH=DFh/DL=03h,AH=DFh/DL=05h
  5436. --------N-21DF--DL02-------------------------
  5437. INT 21 - Novell NetWare - PRINT SERVICES - CANCEL LPT CAPTURE
  5438.     AH = DFh
  5439.     DL = 02h
  5440. Return: AL = status
  5441.         00h successful
  5442. Desc:    this function ends the capture of the default LPT, removes the job from
  5443.       the print queue, and deletes the capture file unless it is a
  5444.       permanent capture file
  5445. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5446.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  5447.     after this call, the default LPT defaults to local printing
  5448. SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=06h
  5449. --------N-21DF--DL03-------------------------
  5450. INT 21 - Novell NetWare - PRINT SERVICES - FLUSH LPT CAPTURE
  5451.     AH = DFh
  5452.     DL = 03h
  5453. Return: AL = status
  5454.         00h successful
  5455. Desc:    this function closes the current capture file for the default LPT
  5456.       and starts printing it if it is not a permanent capture file
  5457. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5458.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  5459.     if more data is sent to the LPT port after this call, a new capture
  5460.       file will be opeend
  5461. SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=07h
  5462. --------N-21DF--DL04-------------------------
  5463. INT 21 - Novell NetWare - PRINT SERVICES - START SPECIFIC LPT CAPTURE
  5464.     AH = DFh
  5465.     DL = 04h
  5466.     DH = LPT port (00h-02h)
  5467. Return: AL = status
  5468.         00h successful
  5469. Desc:    this function redirects the specified LPT to a capture file on the file
  5470.       server
  5471. Notes:    this function is supported by Advanced NetWare 2.1+
  5472.     a print job is queued when the first character of output is captured
  5473. SeeAlso: AX=B800h,AH=DFh/DL=00h,AH=DFh/DL=05h,AH=DFh/DL=06h,AH=DFh/DL=07h
  5474. SeeAlso: AX=F003h
  5475. --------N-21DF--DL05-------------------------
  5476. INT 21 - Novell NetWare - PRINT SERVICES - END SPECIFIC LPT CAPTURE
  5477.     AH = DFh
  5478.     DL = 05h
  5479.     DH = LPT port (00h-02h)
  5480. Return: AL = status
  5481.         00h successful
  5482. Desc:    stop redirecting the specified LPT, close the capture file, and release
  5483.       the job in the print queue for printing
  5484. Notes:    this function is supported by Advanced NetWare 2.1+
  5485.     after this call, the specified LPT defaults to local printing
  5486. SeeAlso: AH=DFh/DL=01h,AH=DFh/DL=04h,AH=DFh/DL=06h,AH=DFh/DL=07h
  5487. --------N-21DF--DL06-------------------------
  5488. INT 21 - Novell NetWare - PRINT SERVICES - CANCEL SPECIFIC LPT CAPTURE
  5489.     AH = DFh
  5490.     DL = 06h
  5491.     DH = LPT port (00h-02h)
  5492. Return: AL = status
  5493.         00h successful
  5494. Desc:    this function ends the capture of the specified LPT, removes the job
  5495.       from the print queue, and deletes the capture file unless it is a
  5496.       permanent capture file
  5497. Notes:    this function is supported by Advanced NetWare 2.1+
  5498.     after this call, the specified LPT defaults to local printing
  5499. SeeAlso: AH=DFh/DL=02h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=07h
  5500. --------N-21DF--DL07-------------------------
  5501. INT 21 - Novell NetWare - PRINT SERVICES - FLUSH SPECIFIC LPT CAPTURE
  5502.     AH = DFh
  5503.     DL = 07h
  5504.     DH = LPT port (00h-02h)
  5505. Return: AL = status
  5506.         00h successful
  5507. Desc:    this function closes the current capture file for the specified LPT
  5508.       and starts printing it if it is not a permanent capture file
  5509. Notes:    this function is supported by Advanced NetWare 2.1+
  5510.     if more data is sent to the LPT port after this call, a new capture
  5511.       file will be opeend
  5512. SeeAlso: AH=DFh/DL=03h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=06h
  5513. --------T-21DF00DX534C-----------------------
  5514. INT 21 U - Software Carousel - INSTALLATION CHECK
  5515.     AX = DF00h
  5516.     DX = 534Ch ("SL")
  5517.     DI = 534Ch ("SL")
  5518. Return: AX = 00FFh if installed
  5519.         ???
  5520. Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
  5521. --------T-21DF01-----------------------------
  5522. INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
  5523.     AX = DF01h
  5524.     BL = task number (00h = next task)
  5525. Return: AL = status
  5526.         00h Carousel not running
  5527.         01h successful
  5528.         FFh unsucessful
  5529.         AH = error code (01h,02h) (see #1466)
  5530.  
  5531. (Table 1466)
  5532. Values for Software Carousel error code:
  5533.  00h    invalid subfunction in AL
  5534.  01h    invalid task number
  5535.  02h    tried to switch to task with no memory size
  5536.  03h    tried to kill program in partition with no program running
  5537.  04h    tried to change size of an active memory partition
  5538.  05h    invalid memory size
  5539.  06h    tried to send command to task with a pending previous command
  5540. --------T-21DF02-----------------------------
  5541. INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
  5542.     AX = DF02h
  5543.     BL = task number
  5544. Return: AL = status
  5545.         00h Carousel not running
  5546.         01h successful
  5547.         FFh unsucessful
  5548.         AH = error code (01h,03h) (see #1466)
  5549. --------T-21DF03-----------------------------
  5550. INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
  5551.     AX = DF03h
  5552.     BL = task number
  5553. Return: AL = status
  5554.         00h Carousel not running
  5555.         01h successful
  5556.         BL = partition state (00h no program running, 01h prog running)
  5557.         DX = partition size in KB
  5558.         FFh unsucessful
  5559.         AH = error code (01h) (see #1466)
  5560. SeeAlso: AX=DF05h
  5561. --------T-21DF04-----------------------------
  5562. INT 21 - Software Carousel - GET PARTITION NAME
  5563.     AX = DF04h
  5564.     BL = task number
  5565. Return: AL = status
  5566.         00h Carousel not running
  5567.         01h successful
  5568.         CX = length of name (00h if default partition name)
  5569.         ES:BX -> partition name (if CX nonzero)
  5570.         FFh unsucessful
  5571.         AH = error code (01h) (see #1466)
  5572. SeeAlso: AX=DF06h
  5573. --------T-21DF05-----------------------------
  5574. INT 21 - Software Carousel - CHANGE PARTITION SIZE
  5575.     AX = DF05h
  5576.     BL = task number
  5577.     DX = new size in KB
  5578. Return: AL = status
  5579.         00h Carousel not running
  5580.         01h successful
  5581.         FFh unsucessful
  5582.         AH = error code (01h,04h,05h) (see #1466)
  5583.     BX = minimum size allowed
  5584.     CX = maximum size available
  5585. SeeAlso: AX=DF03h
  5586. --------T-21DF06-----------------------------
  5587. INT 21 - Software Carousel - CHANGE PARTITION NAME
  5588.     AX = DF06h
  5589.     BL = task number
  5590.     CX = length of new name (00h to use default, max 18h)
  5591.     DS:SI -> new name
  5592. Return: AL = status
  5593.         00h Carousel not running
  5594.         01h successful
  5595.         FFh unsucessful
  5596.         AH = error code (01h) (see #1466)
  5597. SeeAlso: AX=DF04h
  5598. --------T-21DF07-----------------------------
  5599. INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
  5600.     AX = DF07h
  5601.     BL = task number
  5602.     CX = length of command (max 8 chars)
  5603.     DS:SI -> command line
  5604. Return: AL = status
  5605.         00h Carousel not running
  5606.         01h successful
  5607.         FFh unsucessful
  5608.         AH = error code (01h,06h) (see #1466)
  5609. Note:    the maximum length seems too small and may be a typo for 80 characters
  5610. --------T-21DF08-----------------------------
  5611. INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
  5612.     AX = DF08h
  5613.     BL = new state of keyboard (00h disabled, 01h enabled)
  5614. Return: AL = status
  5615.         00h Carousel not running
  5616.         01h successful
  5617. Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
  5618. Note:    when the keyboard is is disabled, the user may neither access the
  5619.       Carousel menu nor switch to another memory section
  5620. --------T-21DF09-----------------------------
  5621. INT 21 - Software Carousel - BOOT THE SYSTEM
  5622.     AX = DF09h
  5623. Return: AL = status
  5624.         00h Carousel not running
  5625.         FFh unsucessful
  5626.         AH = error code (01h,03h) (see #1466)
  5627. Note:    this function never returns if successful
  5628. --------T-21DF0A-----------------------------
  5629. INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
  5630.     AX = DF0Ah
  5631. Return: AL = status
  5632.         00h Carousel not running
  5633.         01h successful
  5634.         BL = task number
  5635.         DX = memory size in KB
  5636.         FFh unsucessful
  5637.         AH = error code (01h,03h) (see #1466)
  5638. --------T-21DF0B-----------------------------
  5639. INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
  5640.     AX = DF0Bh
  5641.     BH = interrupt number or 00h
  5642.     BL = function number to invoke on partition switch
  5643.     CL = function number to call when it is safe for resident programs
  5644.         to perform DOS calls
  5645.     DS:DX -> FAR function to call if BH=00h
  5646. Return: AL = status
  5647.         00h Carousel not running
  5648.         01h successful
  5649.         FFh unsucessful
  5650.         AH = error code (01h,03h) (see #1466)
  5651. Notes:    the specified interrupt or FAR function is called with AH set to the
  5652.       appropriate one of the values specified in BL and CL, and BL set to
  5653.       the new task number
  5654.     the function specified by CL will not be called until the notification
  5655.       is enabled with AX=DF0Ch
  5656. SeeAlso: AX=DF0Ch
  5657. --------T-21DF0C-----------------------------
  5658. INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
  5659.     AX = DF0Ch
  5660. Return: AL = status
  5661.         00h Carousel not running
  5662.         01h successful
  5663. Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
  5664. SeeAlso: AX=DF0Bh
  5665. --------O-21E0-------------------------------
  5666. INT 21 - Digital Research DOS Plus - CALL BDOS
  5667.     AH = E0h
  5668.     CL = BDOS function number (see #3651 at INT E0"CP/M-86")
  5669.     other registers as appropriate for function
  5670. Return: as appropriate for function
  5671. SeeAlso: AX=4459h,INT E0"CP/M-86"
  5672. --------E-21E0-------------------------------
  5673. INT 21 - OS/286, OS/386 - INITIALIZE REAL PROCEDURE
  5674.     AH = E0h
  5675.     ???
  5676. Return: ???
  5677. SeeAlso: AH=E1h"OS/286"
  5678. --------T-21E0-------------------------------
  5679. INT 21 - DoubleDOS - MENU CONTROL
  5680.     AH = E0h
  5681.     AL = subfunction
  5682.         01h exchange tasks
  5683.         73h resume invisible job if suspended
  5684.         74h kill other job
  5685.         75h suspend invisible job
  5686. Note:    identical to AH=F0h
  5687. SeeAlso: AH=F0h"DoubleDOS"
  5688. --------v-21E0-------------------------------
  5689. INT 21 - VIRUS - "Jerusalem", "Armagedon" - INSTALLATION CHECK
  5690.     AH = E0h
  5691. Return: AX = 0300h if "Jerusalem" resident
  5692.     AX = DADAh if "Armagedon" resident
  5693. SeeAlso: AH=DEh"VIRUS",AX=DEDEh"VIRUS",AX=E00Fh
  5694. --------N-21E0-------------------------------
  5695. INT 21 - Novell NetWare, Alloy NTNX - PRINT SPOOLING
  5696.     AH = E0h
  5697.     DS:SI -> request buffer (see #1467)
  5698.     ES:DI -> reply buffer
  5699. Return: AL = status
  5700. Note:    this function was added in NetWare 4.0, but is no longer listed in
  5701.       current Novell documentation and may no longer be supported
  5702. SeeAlso: AH=E3h/SF=68h,AX=F211h/SF=06h,AX=F211h/SF=0Ah
  5703.  
  5704. Format of NetWare print spooling request buffer:
  5705. Offset    Size    Description    (Table 1467)
  5706.  00h    WORD    length of following data
  5707.  02h    BYTE    subfunction
  5708.         00h spool data to a capture file
  5709.         01h close and queue capture file
  5710.         02h set spool flags
  5711.         03h spool existing file
  5712.         04h get spool queue entry
  5713.         05h remove entry from spool queue
  5714.  03h    ???
  5715. SeeAlso: #1756
  5716. --------N-21E0--SF06-------------------------
  5717. INT 21 - Novell NetWare - PRINT SERVICES - GET PRINTER STATUS
  5718.     AH = E0h subfn 06h
  5719.     DS:SI -> request buffer (see #1468)
  5720.     ES:DI -> reply buffer (see #1469)
  5721. Return: AL = status
  5722.         00h successful
  5723.         FFh no such printer
  5724. Desc:    get current state of specified printer attached to the server
  5725. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5726.       Alloy NTNX
  5727.  
  5728. Format of NetWare "Get Printer Status" request buffer:
  5729. Offset    Size    Description    (Table 1468)
  5730.  00h    WORD    0002h (length of following data)
  5731.  02h    BYTE    06h (subfunction "Get Printer Status")
  5732.  03h    BYTE    printer number (00h-04h)
  5733. SeeAlso: #1469
  5734.  
  5735. Format of NetWare "Get Printer Status" reply buffer:
  5736. Offset    Size    Description    (Table 1469)
  5737.  00h    WORD    (call) 0004h (size of following results buffer)
  5738.  02h    BYTE    flag: 00h printer active, FFh printer halted
  5739.  03h    BYTE    flag: 00h printer online, 01h printer offline
  5740.  04h    BYTE    current form type
  5741.  05h    BYTE    target printer number (00h-04h)
  5742.         same as number in request buffer unless rerouted by server
  5743.           console
  5744. SeeAlso: #1468
  5745. --------N-21E0--SF09-------------------------
  5746. INT 21 - Novell NetWare - PRINT SERVICES - SPECIFY CAPTURE FILE
  5747.     AH = E0h subfn 09h
  5748.     DS:SI -> request buffer (see #1470)
  5749.     ES:DI -> reply buffer (see #1471)
  5750. Return: AL = status
  5751.         00h successful
  5752.         9Ch invalid path
  5753. Desc:    create a permanent capture file for the next print capture to be
  5754.       started
  5755. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5756.       Alloy NTNX
  5757.     the caller must have read, write, and create rights for the directory
  5758.       containing the capture file
  5759.  
  5760. Format of NetWare "Specify Capture File" request buffer:
  5761. Offset    Size    Description    (Table 1470)
  5762.  00h    WORD    length of following data (max 102h)
  5763.  02h    BYTE    09h (subfunction "Specify Capture File")
  5764.  03h    BYTE    directory handle or 00h
  5765.  04h    BYTE    length of filename
  5766.  05h  N BYTEs    name of capture file
  5767. SeeAlso: #1471
  5768.  
  5769. Format of NetWare reply buffer:
  5770. Offset    Size    Description    (Table 1471)
  5771.  00h    WORD    (call) 0000h (no results returned)
  5772. SeeAlso: #1470
  5773. --------v-21E00F-----------------------------
  5774. INT 21 - VIRUS - "8-tunes" - INSTALLATION CHECK
  5775.     AX = E00Fh
  5776. Return: AX = 4C31h if resident
  5777. SeeAlso: AH=E0h"VIRUS",AH=E1h"VIRUS"
  5778. --------E-21E1-------------------------------
  5779. INT 21 - OS/286, OS/386 - ISSUE REAL PROCEDURE CALL
  5780.     AH = E1h
  5781.     ???
  5782. Return: ???
  5783. Note:    protected mode only???
  5784. SeeAlso: AH=E0h"OS/286",AH=E2h"OS/286",AH=E3h"OS/286",AX=250Eh,INT 31/AX=0301h
  5785. --------T-21E1-------------------------------
  5786. INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
  5787.     AH = E1h
  5788. SeeAlso: AH=E2h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
  5789. SeeAlso: AH=F1h"DoubleDOS"
  5790. --------v-21E1-------------------------------
  5791. INT 21 - VIRUS - "Mendoza", "Fu Manchu" - INSTALLATION CHECK
  5792.     AH = E1h
  5793. Return: AX = 0300h if "Mendoza" resident
  5794.     AX = 0400h if "Fu Manchu" resident
  5795. SeeAlso: AX=E00Fh,AH=E4h"VIRUS"
  5796. --------N-21E1--SF00-------------------------
  5797. INT 21 - Novell NetWare - MESSAGE SERVICES - SEND BROADCAST MESSAGE
  5798.     AH = E1h subfn 00h
  5799.     DS:SI -> request buffer (see #1472)
  5800.     ES:DI -> reply buffer (see #1473)
  5801. Return: AL = status
  5802.         00h successful
  5803.         FEh I/O error or out of dynamic workspace
  5804. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5805. SeeAlso: AH=DEh"NetWare",AH=DEh/DL=04h,AH=E1h/SF=01h,AH=E1h/SF=04h
  5806. SeeAlso: AH=E1h/SF=09h
  5807.  
  5808. Format of NetWare "Send Broadcast Message" request buffer:
  5809. Offset    Size    Description    (Table 1472)
  5810.  00h    WORD    length of following data (max 9Eh)
  5811.  02h    BYTE    00h (subfunction "Send Broadcast Message")
  5812.  03h    BYTE    number of connections (01h-64h)
  5813.  04h  N BYTEs    list of connections to receive broadcast message
  5814.     BYTE    length of message (01h-37h)
  5815.       N BYTEs    broadcast message (no control characters or characters > 7Eh)
  5816. SeeAlso: #1473
  5817.  
  5818. Format of NetWare "Send Broadcast Message" reply buffer:
  5819. Offset    Size    Description    (Table 1473)
  5820.  00h    WORD    (call) size of following results buffer (max 65h)
  5821.  02h    BYTE    number of connections
  5822.  03h  N BYTEs    list of per-connection results
  5823.         00h successful
  5824.         FCh message rejected due to lack of buffer space
  5825.         FDh invalid connection number
  5826.         FFh blocked (see also AH=E1h/SF=02h)
  5827. SeeAlso: #1472
  5828. --------N-21E1--SF01-------------------------
  5829. INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MESSAGE (OLD)
  5830.     AH = E1h subfn 01h
  5831.     DS:SI -> request buffer (see #1474)
  5832.     ES:DI -> reply buffer (see #1475)
  5833. Return: AL = status
  5834.         00h successful
  5835.         FCh full message queue
  5836.         FEh out of dynamic workspace
  5837. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5838. SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=09h
  5839. SeeAlso: AX=F215h/SF=01h,AX=F215h/SF=0Bh
  5840.  
  5841. Format of NetWare "Get Broadcast Message" request buffer:
  5842. Offset    Size    Description    (Table 1474)
  5843.  00h    WORD    0001h (length of following data)
  5844.  02h    BYTE    01h (subfunction "Get Broadcast Message")
  5845. SeeAlso: #1475,#1764
  5846.  
  5847. Format of NetWare "Get Broadcast Message" reply buffer:
  5848. Offset    Size    Description    (Table 1475)
  5849.  00h    WORD    (call) size of following results buffer (max 38h)
  5850.  02h    BYTE    length of message (00h-37h)
  5851.         00h if no broadcast messages pending
  5852.  03h  N BYTEs    message (no control characters or characters > 7Eh)
  5853. SeeAlso: #1474,#1762,#1765
  5854. --------N-21E1--SF02-------------------------
  5855. INT 21 - Novell NetWare - MESSAGE SERVICES - DISABLE BROADCAST MESSAGES
  5856.     AH = E1h subfn 02h
  5857.     DS:SI -> request buffer (see #1477)
  5858.     ES:DI -> reply buffer (see #1478)
  5859. Return: AL = error code
  5860. Note:    these functions are supported by NetWare 4.0+ but are not listed in
  5861.       _NetWare_System_Calls--DOS_; they may be obsolete
  5862. SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=03h,AH=E1h/SF=04h,AH=E1h/SF=09h
  5863. SeeAlso: AX=F215h/SF=02h
  5864.  
  5865. Format of NetWare "Disable Broadcasts" request packet:
  5866. Offset    Size    Description    (Table 1476)
  5867.  00h    WORD    0001h (length of following data)
  5868.  02h    BYTE    02h (subfunction "Enable Broadcast Messages")
  5869. SeeAlso: #1477,#1478
  5870. --------N-21E1--SF03-------------------------
  5871. INT 21 - Novell NetWare - MESSAGE SERVICES - ENABLE BROADCAST MESSAGES
  5872.     AH = E1h subfn 03h
  5873.     DS:SI -> request buffer (see #1477)
  5874.     ES:DI -> reply buffer (see #1478)
  5875. Return: AL = error code
  5876. Note:    these functions are supported by NetWare 4.0+ but are not listed in
  5877.       _NetWare_System_Calls--DOS_; they may be obsolete
  5878. SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=02h,AH=E1h/SF=04h,AH=E1h/SF=09h
  5879. SeeAlso: AX=F215h/SF=03h
  5880.  
  5881. Format of NetWare "Enable Broadcast Messages" request buffer:
  5882. Offset    Size    Description    (Table 1477)
  5883.  00h    WORD    0001h (length of following data)
  5884.  02h    BYTE    03h (subfunction "Enable Broadcast Messages")
  5885. SeeAlso: #1478,#1476
  5886.  
  5887. Format of NetWare "Enable/Disable Broadcast Messages" reply buffer:
  5888. Offset    Size    Description    (Table 1478)
  5889.  00h    WORD    (call) 0000h (no data returned)
  5890. SeeAlso: #1477,#1476
  5891. --------N-21E1--SF04-------------------------
  5892. INT 21 O - Novell NetWare - MESSAGE SERVICES - SEND PERSONAL MESSAGE
  5893.     AH = E1h subfn 04h
  5894.     DS:SI -> request buffer (see #1479)
  5895.     ES:DI -> reply buffer (see #1480)
  5896. Return: AL = status
  5897.         00h successful
  5898.         FEh I/O error or out of dynamic workspace
  5899. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  5900.     message pipes use CPU time on the file server; IPX, SPX, or NetBIOS
  5901.       connections should be used for peer-to-peer communications as these
  5902.       protocols do not use file server time
  5903. SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
  5904.  
  5905. Format of NetWare "Send Personal Message" request buffer:
  5906. Offset    Size    Description    (Table 1479)
  5907.  00h    WORD    length of following data (max E5h)
  5908.  02h    BYTE    04h (subfunction "Send Personal Message")
  5909.  03h    BYTE    number of connections (01h-64h)
  5910.  04h  N BYTEs    list of connections to receive broadcast message
  5911.     BYTE    length of message (01h-7Eh)
  5912.       N BYTEs    message (no control characters or characters > 7Eh)
  5913. SeeAlso: #1480
  5914.  
  5915. Format of NetWare "Send Personal Message" reply buffer:
  5916. Offset    Size    Description    (Table 1480)
  5917.  00h    WORD    (call) size of following results buffer (max 65h)
  5918.  02h    BYTE    number of connections
  5919.  03h  N BYTEs    list of per-connection results
  5920.         00h successful
  5921.         FCh message rejected because queue is full (contains 6 msgs)
  5922.         FDh incomplete pipe
  5923.         FFh failed
  5924. SeeAlso: #1479
  5925. --------N-21E1--SF05-------------------------
  5926. INT 21 O - Novell NetWare - MESSAGE SERVICES - GET PERSONAL MESSAGE
  5927.     AH = E1h subfn 05h
  5928.     DS:SI -> request buffer (see #1481)
  5929.     ES:DI -> reply buffer (see #1482)
  5930. Return: AL = status
  5931.         00h successful
  5932.         FEh out of dynamic workspace
  5933. Desc:    return the oldest message in the default file server's message queue
  5934.       for the calling workstation
  5935. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  5936. SeeAlso: AH=E1h/SF=01h,AH=E1h/SF=04h,AH=E1h/SF=06h,AH=E1h/SF=08h
  5937.  
  5938. Format of NetWare "Get Personal Message" request buffer:
  5939. Offset    Size    Description    (Table 1481)
  5940.  00h    WORD    0001h (length of following data)
  5941.  02h    BYTE    05h (subfunction "Get Personal Message")
  5942. SeeAlso: #1482
  5943.  
  5944. Format of NetWare "Get Personal Message" reply buffer:
  5945. Offset    Size    Description    (Table 1482)
  5946.  00h    WORD    (call) size of following results buffer (max 80h)
  5947.  02h    BYTE    connection number of sending station
  5948.  03h    BYTE    length of message (00h-7Eh)
  5949.         00h if no personal messages pending
  5950.  04h  N BYTEs    message (no control characters or characters > 7Eh)
  5951. SeeAlso: #1481
  5952. --------N-21E1--SF06-------------------------
  5953. INT 21 O - Novell NetWare - MESSAGE SERVICES - OPEN MESSAGE PIPE
  5954.     AH = E1h subfn 06h
  5955.     DS:SI -> request buffer (see #1483)
  5956.     ES:DI -> reply buffer (see #1484)
  5957. Return: AL = status
  5958.         00h successful
  5959.         FEh out of dynamic workspace
  5960. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  5961. SeeAlso: AH=E1h/SF=04h,AH=E1h/SF=07h,AH=E1h/SF=08h
  5962.  
  5963. Format of NetWare "Open Message Pipe" request buffer:
  5964. Offset    Size    Description    (Table 1483)
  5965.  00h    WORD    length of following data (max 66h)
  5966.  02h    BYTE    06h (subfunction "Open Message Pipe")
  5967.  03h    BYTE    number of pipes to open (01h-64h)
  5968.  04h  N BYTEs    list of connection numbers
  5969. SeeAlso: #1484,#1485,#1488
  5970.  
  5971. Format of NetWare "Open Message Pipe" reply buffer:
  5972. Offset    Size    Description    (Table 1484)
  5973.  00h    WORD    (call) size of following results buffer (max 65h)
  5974.  02h    BYTE    number of connections
  5975.  03h  N BYTEs    list of results
  5976.         00h successful
  5977.         FEh incomplete (target half not yet created)
  5978.         FFh failed
  5979. SeeAlso: #1483,#1486,#1489
  5980. --------N-21E1--SF07-------------------------
  5981. INT 21 O - Novell NetWare - MESSAGE SERVICES - CLOSE MESSAGE PIPE
  5982.     AH = E1h subfn 07h
  5983.     DS:SI -> request buffer (see #1485)
  5984.     ES:DI -> reply buffer (see #1486)
  5985. Return: AL = status
  5986.         00h successful
  5987.         FCh full message queue
  5988.         FEh out of dynamic workspace
  5989. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  5990. SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
  5991.  
  5992. Format of NetWare "Close Mesage Pipe" request buffer:
  5993. Offset    Size    Description    (Table 1485)
  5994.  00h    WORD    length of following data (max 66h)
  5995.  02h    BYTE    07h (subfunction "Close Message Pipe")
  5996.  03h    BYTE    number of pipes to close (01h-64h)
  5997.  04h  N BYTEs    list of connection numbers
  5998. SeeAlso: #1483,#1486
  5999.  
  6000. Format of NetWare "Close Message Pipe" reply buffer:
  6001. Offset    Size    Description    (Table 1486)
  6002.  00h    WORD    (call) size of following results buffer (max 65h)
  6003.  02h    BYTE    number of connections
  6004.  03h  N BYTEs    list of results
  6005.         00h successful
  6006.         FDh failed
  6007.         FFh no such pipe
  6008. SeeAlso: #1484,#1485
  6009. --------N-21E1--SF08-------------------------
  6010. INT 21 O - Novell NetWare - MESSAGE SERVICES - CHECK PIPE STATUS
  6011.     AH = E1h subfn 08h
  6012.     DS:SI -> request buffer (see #1488)
  6013.     ES:DI -> reply buffer (see #1489)
  6014. Return: AL = status (see #1487)
  6015. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  6016. SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=07h,AX=F215h/SF=08h
  6017.  
  6018. (Table 1487)
  6019. Values for NetWare function status:
  6020.  00h    successful
  6021.  FCh    full message queue
  6022.  FEh    out of dynamic workspace
  6023. SeeAlso: #1492
  6024.  
  6025. Format of NetWare "Check Pipe Status" request buffer:
  6026. Offset    Size    Description    (Table 1488)
  6027.  00h    WORD    length of following data (max 66h)
  6028.  02h    BYTE    08h (subfunction "Check Pipe Status")
  6029.  03h    BYTE    number of pipes to monitor (01h-64h)
  6030.  04h  N BYTEs    list of connection numbers
  6031. SeeAlso: #1483,#1489
  6032.  
  6033. Format of NetWare "Check Pipe Status" reply buffer:
  6034. Offset    Size    Description    (Table 1489)
  6035.  00h    WORD    (call) size of following results buffer (max 65h)
  6036.  02h    BYTE    number of connections
  6037.  03h  N BYTEs    list of pipe statuses
  6038.         00h open
  6039.         FEh incomplete
  6040.         FFh closed
  6041. SeeAlso: #1484,#1488,#1763
  6042. --------N-21E1--SF09-------------------------
  6043. INT 21 - Novell NetWare - MESSAGE SERVICES - BROADCAST TO CONSOLE
  6044.     AH = E1h subfn 09h
  6045.     DS:SI -> request buffer (see #1490)
  6046.     ES:DI -> reply buffer (see #1491)
  6047. Return: AL = status (see #1487)
  6048. Desc:    send a one-line message to the system console on the default file
  6049.       server
  6050. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  6051. SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=01h,AH=E3h/SF=D1h
  6052. SeeAlso: AX=F215h/SF=09h
  6053.  
  6054. Format of NetWare "Broadcast to Console" request buffer:
  6055. Offset    Size    Description    (Table 1490)
  6056.  00h    WORD    length of following data (max 3Eh)
  6057.  02h    BYTE    09h (subfunction "Broadcast to Console")
  6058.  03h    BYTE    length of message (01h-3Ch)
  6059.  04h  N BYTEs    message (no control characters or characters > 7Eh)
  6060. SeeAlso: #1491
  6061.  
  6062. Format of NetWare reply buffer:
  6063. Offset    Size    Description    (Table 1491)
  6064.  00h    WORD    (call) 0000h (no results returned)
  6065. SeeAlso: #1490
  6066. --------E-21E2-------------------------------
  6067. INT 21 - OS/286, OS/386 - SET REAL PROCEDURE SIGNAL HANDLER
  6068.     AH = E2h
  6069.     ???
  6070. Return: ???
  6071. SeeAlso: AH=E0h"OS/286",AH=E1h"OS/286",AH=E6h"OS/286"
  6072. --------N-21E2-------------------------------
  6073. INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
  6074.     AH = E2h
  6075.     AL = character
  6076. Return: AL = 00h successful
  6077.          01h buffer full (128 characters)
  6078. SeeAlso: AH=E1h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
  6079. SeeAlso: AH=F2h"DoubleDOS"
  6080. --------N-21E2--SF00-------------------------
  6081. INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY HANDLE
  6082.     AH = E2h subfn 00h
  6083.     DS:SI -> request buffer (see #1493)
  6084.     ES:DI -> reply buffer (see #1494)
  6085. Return: AL = status (00h,98h,9Bh,9Ch) (see #1492)
  6086. Desc:    set the target handle to reference the directory specified by the
  6087.       source handle and the source path; both handles must refer to the
  6088.       same file server
  6089. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6090.       Alloy NTNX
  6091.     the target handle is not changed if this function fails
  6092. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=00h
  6093.  
  6094. (Table 1492)
  6095. Values for NetWare function status:
  6096.  00h    successful
  6097.  84h    not permitted to create
  6098.  8Ah    not permitted to delete
  6099.  8Bh    not permitted to rename
  6100.  8Ch    not permitted to modify
  6101.  98h    nonexistent volume
  6102.  9Bh    invalid directory handle
  6103.  9Ch    invalid path
  6104.  9Eh    invalid filename
  6105.  9Fh    directory currently in use
  6106.  A0h    directory not empty
  6107.  C6h    no console rights
  6108.  FCh    no such bindery object
  6109. SeeAlso: #1487,#1519
  6110.  
  6111. Format of NetWare "Set Directory Handle" request buffer:
  6112. Offset    Size    Description    (Table 1493)
  6113.  00h    WORD    length of following data (max 103h)
  6114.  02h    BYTE    00h (subfunction "Set Directory Handle")
  6115.  03h    BYTE    directory handle of target
  6116.  04h    BYTE    directory handle of source
  6117.  05h    BYTE    length of source directory path (01h-FFh)
  6118.  06h  N BYTEs    source directory path
  6119. SeeAlso: #1494
  6120.  
  6121. Format of NetWare reply buffer:
  6122. Offset    Size    Description    (Table 1494)
  6123.  00h    WORD    (call) 0000h (no results returned)
  6124. SeeAlso: #1493
  6125. --------N-21E2--SF01-------------------------
  6126. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY PATH
  6127.     AH = E2h subfn 01h
  6128.     DS:SI -> request buffer (see #1495)
  6129.     ES:DI -> reply buffer (see #1496)
  6130. Return: AL = status (00h,9Bh) (see #1492)
  6131. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6132.       Alloy NTNX
  6133. SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=03h,AH=E2h/SF=1Ah,AH=E9h,AX=F216h/SF=01h
  6134.  
  6135. Format of NetWare "Get Directory Path" request buffer:
  6136. Offset    Size    Description    (Table 1495)
  6137.  00h    WORD    0002h (length of following data)
  6138.  02h    BYTE    01h (subfunction "Get Directory Path")
  6139.  03h    BYTE    directory handle
  6140. SeeAlso: #1496,#1497
  6141.  
  6142. Format of NetWare "Get Directory Path" reply buffer:
  6143. Offset    Size    Description    (Table 1496)
  6144.  00h    WORD    (call) length of following data buffer
  6145.  02h    BYTE    length of directory path (01h-FFh)
  6146.  03h  N BYTEs    full directory path including volume
  6147. SeeAlso: #1495,#1498
  6148. --------N-21E2--SF02-------------------------
  6149. INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY INFORMATION
  6150.     AH = E2h subfn 02h
  6151.     DS:SI -> request buffer (see #1497)
  6152.     ES:DI -> reply buffer (see #1498)
  6153. Return: AL = status (00h,98h,9Bh,9Ch) (see #1492)
  6154. Desc:    get information about the first or next subdirectory of the specified
  6155.       directory
  6156. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6157.       Alloy NTNX
  6158. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=03h,AH=E2h/SF=19h,AX=F216h/SF=02h
  6159.  
  6160. Format of NetWare "Scan Directory Information" request buffer:
  6161. Offset    Size    Description    (Table 1497)
  6162.  00h    WORD    length of following data (max 104h)
  6163.  02h    BYTE    02h (subfunction "Scan Directory Information")
  6164.  03h    BYTE    directory handle
  6165.  04h    WORD    (big-endian) subdirectory number
  6166.         0000h for first call, returned subdir number + 1 on next call
  6167.  06h    BYTE    length of directory path
  6168.  07h  N BYTEs    directory path
  6169. SeeAlso: #1495,#1498
  6170.  
  6171. Format of NetWare "Scan Directory Information" reply buffer:
  6172. Offset    Size    Description    (Table 1498)
  6173.  00h    WORD    (call) 001Ch (length of following data buffer)
  6174.  02h 16 BYTEs    subdirectory name
  6175.  12h    DWORD    (big-endian) date and time of creation (see #1499)
  6176.  16h    DWORD    (big-endian) object ID of owner
  6177.  1Ah    BYTE    maximum directory rights (see #1502)
  6178.  1Bh    BYTE    unused
  6179.  1Ch    WORD    (big-endian) subdirectory number
  6180. SeeAlso: #1496,#1497,#1766 at AX=F216h/SF=02h
  6181.  
  6182. Bitfields for NetWare date and time:
  6183. Bit(s)    Description    (Table 1499)
  6184.  31-25    year-1980
  6185.  24-21    month
  6186.  20-16    day
  6187.  15-11    hour
  6188.  10-5    minute
  6189.  4-0    second
  6190. --------N-21E2--SF03-------------------------
  6191. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET EFFECTIVE DIRECTORY RIGHTS
  6192.     AH = E2h subfn 03h
  6193.     DS:SI -> request buffer (see #1500)
  6194.     ES:DI -> reply buffer (see #1501)
  6195. Return: AL = status (00h,98h,9Bh) (see #1492)
  6196. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6197.       Alloy NTNX
  6198. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=02h,AX=F216h/SF=03h
  6199.  
  6200. Format of NetWare "Get Effective Directory Rights (old)" request buffer:
  6201. Offset    Size    Description    (Table 1500)
  6202.  00h    WORD    length of following data (max 102h)
  6203.  02h    BYTE    03h (subfunction "Get Effective Directory Rights (old)")
  6204.  03h    BYTE    directory handle
  6205.  04h    BYTE    length of directory path (00h-FFh)
  6206.  05h  N BYTEs    directory path
  6207. SeeAlso: #1501,#1503
  6208.  
  6209. Format of NetWare "Get Effective Directory Rights" reply buffer:
  6210. Offset    Size    Description    (Table 1501)
  6211.  00h    WORD    (call) 0001h (length of following data buffer)
  6212.  02h    BYTE    effective directory rights (see #1502)
  6213. SeeAlso: #1500
  6214.  
  6215. Bitfields for NetWare directory rights:
  6216. Bit(s)    Description    (Table 1502)
  6217.  0    reading allowed
  6218.  1    writing allowed
  6219.  2    opens allowed
  6220.  3    file creation allowed
  6221.  4    deletion allowed
  6222.  5    "parental" may create/delete subdirectories and grant/revoke trustee
  6223.       rights
  6224.  6    directory search allowed
  6225.  7    file attributes may be changed
  6226. SeeAlso: #1501,#1503
  6227. --------N-21E2--SF04-------------------------
  6228. INT 21 - Novell NetWare - DIRECTORY SERVICES - MODIFY MAXIMUM RIGHTS MASK
  6229.     AH = E2h subfn 04h
  6230.     DS:SI -> request buffer (see #1503)
  6231.     ES:DI -> reply buffer (see #1504)
  6232. Return: AL = status (00h,8Ch,98h,9Ch) (see #1492)
  6233. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6234.       Alloy NTNX
  6235. SeeAlso: AH=E2h/SF=03h,AH=E2h/SF=0Ah,AH=E2h/SF=0Dh,AX=F216h/SF=04h
  6236.  
  6237. Format of NetWare "Modify Maximum Rights Mask" request buffer:
  6238. Offset    Size    Description    (Table 1503)
  6239.  00h    WORD    length of following data (max 104h)
  6240.  02h    BYTE    04h (subfunction "Modify Maximum Rights Mask")
  6241.  03h    BYTE    directory handle
  6242.  04h    BYTE    rights to grant (see #1502)
  6243.  05h    BYTE    rights to revoke (see #1502)
  6244.  06h    BYTE    length of directory path (00h-FFh)
  6245.  07h  N BYTEs    directory path
  6246. Note:    the rights specified at offset 05h are revoked first, and then the
  6247.       rights specified at offset 04h are added to the resulting rights
  6248.       mask
  6249. SeeAlso: #1500,#1504
  6250.  
  6251. Format of NetWare reply buffer:
  6252. Offset    Size    Description    (Table 1504)
  6253.  00h    WORD    (call) 0000h (no results returned)
  6254. SeeAlso: #1503
  6255. --------N-21E2--SF05-------------------------
  6256. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NUMBER
  6257.     AH = E2h subfn 05h
  6258.     DS:SI -> request buffer (see #1505)
  6259.     ES:DI -> reply buffer (see #1506)
  6260. Return: AL = status (00h,98h) (see #1492)
  6261. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6262.       Alloy NTNX
  6263. SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E3h/SF=E9h
  6264. SeeAlso: AX=F216h/SF=05h
  6265.  
  6266. Format of NetWare "Get Volume Number" request buffer:
  6267. Offset    Size    Description    (Table 1505)
  6268.  00h    WORD    length of following data (max 12h)
  6269.  02h    BYTE    05h (subfunction "Get Volume Number")
  6270.  03h    BYTE    length of volume name (01h-10h)
  6271.  04h  N BYTEs    volume name
  6272. SeeAlso: #1506,#1768 at AX=F216h/SF=05h
  6273.  
  6274. Format of NetWare "Get Volume Number" reply buffer:
  6275. Offset    Size    Description    (Table 1506)
  6276.  00h    WORD    (call) 0001h (length of following results buffer)
  6277.  02h    BYTE    volume number
  6278. SeeAlso: #1505,#1768 at AX=F216h/SF=05h
  6279. --------N-21E2--SF06-------------------------
  6280. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NAME
  6281.     AH = E2h subfn 06h
  6282.     DS:SI -> request buffer (see #1507)
  6283.     ES:DI -> reply buffer (see #1508)
  6284. Return: AL = status (00h,98h) (see #1492)
  6285. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6286.       Alloy NTNX
  6287. SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E2h/SF=1Ah
  6288. SeeAlso: AH=E3h/SF=E9h,AX=F216h/SF=06h
  6289.  
  6290. Format of NetWare "Get Volume Name" request buffer:
  6291. Offset    Size    Description    (Table 1507)
  6292.  00h    WORD    0002h (length of following data)
  6293.  02h    BYTE    06h (subfunction "Get Volume Name")
  6294.  03h    BYTE    volume number
  6295. SeeAlso: #1508,#1769 at AX=F216h/SF=06h
  6296.  
  6297. Format of NetWare "Get Volume Name" reply buffer:
  6298. Offset    Size    Description    (Table 1508)
  6299.  00h    WORD    (call) 0011h (length of following results buffer)
  6300.  02h    BYTE    length of volume name
  6301.  03h 16 BYTEs    NUL-padded volume name
  6302. SeeAlso: #1507,#1769 at AX=F216h/SF=06h
  6303. --------N-21E2--SF0A-------------------------
  6304. INT 21 - Novell NetWare - DIRECTORY SERVICES - CREATE DIRECTORY
  6305.     AH = E2h subfn 0Ah
  6306.     DS:SI -> request buffer (see #1509)
  6307.     ES:DI -> reply buffer (see #1510)
  6308. Return: AL = status (00h,84h,98h,FCh) (see #1492)
  6309. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6310.       Alloy NTNX
  6311. SeeAlso: AH=39h,AH=E2h/SF=0Bh,AH=E2h/SF=0Fh,AX=F216h/SF=0Ah
  6312.  
  6313. Format of NetWare "Create Directory" request buffer:
  6314. Offset    Size    Description    (Table 1509)
  6315.  00h    WORD    length of following data (max 103h)
  6316.  02h    BYTE    0Ah (subfunction "Create Directory")
  6317.  03h    BYTE    directory handle
  6318.  04h    BYTE    maximum directory rights (see #1502)
  6319.  05h    BYTE    length of directory path (00h-FFh)
  6320.  06h  N BYTEs    directory path
  6321. SeeAlso: #1510,#1511
  6322.  
  6323. Format of NetWare reply buffer:
  6324. Offset    Size    Description    (Table 1510)
  6325.  00h    WORD    (call) 0000h (no data returned)
  6326. SeeAlso: #1509,#1511
  6327. --------N-21E2--SF0B-------------------------
  6328. INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE DIRECTORY
  6329.     AH = E2h subfn 0Bh
  6330.     DS:SI -> request buffer (see #1511)
  6331.     ES:DI -> reply buffer (see #1510)
  6332. Return: AL = status (00h,8Ah,98h,9Bh,9Ch,9Fh,A0h) (see #1492)
  6333. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6334.       Alloy NTNX
  6335. SeeAlso: AH=3Ah,AH=E2h/SF=0Ah,AH=E2h/SF=0Fh,AX=F216h/SF=0Bh
  6336.  
  6337. Format of NetWare "Delete Directory" request buffer:
  6338. Offset    Size    Description    (Table 1511)
  6339.  00h    WORD    length of following data (max 103h)
  6340.  02h    BYTE    0Bh (subfunction "Delete Directory")
  6341.  03h    BYTE    directory handle
  6342.  04h    BYTE    unused
  6343.  05h    BYTE    length of directory path (00h-FFh)
  6344.  06h  N BYTEs    directory path
  6345. SeeAlso: #1509,#1510
  6346. --------N-21E2--SF0C-------------------------
  6347. INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY FOR TRUSTEES
  6348.     AH = E2h subfn 0Ch
  6349.     DS:SI -> request buffer (see #1512)
  6350.     ES:DI -> reply buffer (see #1513)
  6351. Return: AL = status (00h,9Ch) (see also #1492)
  6352.         9Ch no more trustees
  6353. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  6354. SeeAlso: AH=E2h/SF=0Dh,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Ch
  6355.  
  6356. Format of NetWare "Scan Directory For Trustees" request buffer:
  6357. Offset    Size    Description    (Table 1512)
  6358.  00h    WORD    length of following data (max 103h)
  6359.  02h    BYTE    0Ch (subfunction "Scan Directory For Trustees")
  6360.  03h    BYTE    directory handle
  6361.  04h    BYTE    sequence number
  6362.         00h on first call, increment for each subsequent call
  6363.  05h    BYTE    length of directory path (00h-FFh)
  6364.  06h  N BYTEs    directory path
  6365. SeeAlso: #1513,#1514,#1770 at AX=F216h/SF=0Ch
  6366.  
  6367. Format of NetWare "Scan Directory For Trustees" reply buffer:
  6368. Offset    Size    Description    (Table 1513)
  6369.  00h    WORD    (call) 0031h (length of following results buffer)
  6370.  02h 16 BYTEs    directory name
  6371.  12h  4 BYTEs    date and time of creation
  6372.  16h    DWORD    (big-endian) object ID of owner
  6373.  1Ah  5 DWORDs    (big-endian) object IDs of Trustees 0 through 4
  6374.         00000000h = end of group
  6375.  2Eh  5 BYTEs    directory rights for Trustees 0 through 4 (see #1502)
  6376. SeeAlso: #1512,#1516,#1770 at AX=F216h/SF=0Ch
  6377. --------N-21E2--SF0D-------------------------
  6378. INT 21 - Novell NetWare - DIRECTORY SERVICES - ADD TRUSTEE TO DIRECTORY
  6379.     AH = E2h subfn 0Dh
  6380.     DS:SI -> request buffer (see #1514)
  6381.     ES:DI -> reply buffer (see #1516)
  6382. Return: AL = status (00h,8Ch,FCh) (see #1492)
  6383. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6384.       Alloy NTNX
  6385. SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Dh
  6386.  
  6387. Format of NetWare "Add Trustee To Directory" request buffer:
  6388. Offset    Size    Description    (Table 1514)
  6389.  00h    WORD    length of following data (max 107h)
  6390.  02h    BYTE    0Dh (subfunction "Add Trustee To Directory")
  6391.  03h    BYTE    directory handle
  6392.  04h    DWORD    (big-endian) object ID of trustee
  6393.  08h    BYTE    trustee directory rights (see #1502)
  6394.  09h    BYTE    length of directory path (00h-FFh)
  6395.  0Ah  N BYTEs    directory path
  6396. SeeAlso: #1516
  6397. --------N-21E2--SF0E-------------------------
  6398. INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE TRUSTEE FROM DIRECTORY
  6399.     AH = E2h subfn 0Eh
  6400.     DS:SI -> request buffer (see #1515)
  6401.     ES:DI -> reply buffer (see #1516)
  6402. Return: AL = status (00h,98h,9Bh,9Ch) (see #1492)
  6403. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6404.       Alloy NTNX
  6405. SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh,AX=F216h/SF=0Eh
  6406.  
  6407. Format of NetWare "Delete Trustee From Directory" request buffer:
  6408. Offset    Size    Description    (Table 1515)
  6409.  00h    WORD    length of following data (max 107h)
  6410.  02h    BYTE    0Eh (subfunction "Delete Trustee From Directory")
  6411.  03h    BYTE    directory handle
  6412.  04h    DWORD    (big-endian) object ID of trustee
  6413.  08h    BYTE    unused
  6414.  09h    BYTE    length of directory path (00h-FFh)
  6415.  0Ah  N BYTEs    directory path
  6416. SeeAlso: #1516
  6417.  
  6418. Format of NetWare reply buffer:
  6419. Offset    Size    Description    (Table 1516)
  6420.  00h    WORD    (call) 0000h (no data returned)
  6421. SeeAlso: #1515,#1517,#1518
  6422. --------N-21E2--SF0F-------------------------
  6423. INT 21 - Novell NetWare - DIRECTORY SERVICES - RENAME DIRECTORY
  6424.     AH = E2h subfn 0Fh
  6425.     DS:SI -> request buffer (see #1517)
  6426.     ES:DI -> reply buffer (see #1516)
  6427. Return: AL = status (00h,8Bh,9Bh,9Ch,9Eh) (see #1492)
  6428. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6429.       Alloy NTNX
  6430.     directories SYS:LOGIN, SYS:MAIL, and SYS:PUBLIC must not be renamed
  6431. SeeAlso: AH=56h,AH=E2h/SF=0Ah,AH=E2h/SF=0Bh,AX=F216h/SF=0Fh
  6432.  
  6433. Format of NetWare "Rename Directory" request buffer:
  6434. Offset    Size    Description    (Table 1517)
  6435.  00h    WORD    length of following data (max 111h)
  6436.  02h    BYTE    0Fh (subfunction "Rename Directory")
  6437.  03h    BYTE    directory handle
  6438.  04h    BYTE    length of directory path (00h-FFh)
  6439.  05h  N BYTEs    directory path
  6440.     BYTE    length of new directory name (01h-0Eh)
  6441.       N BYTEs    new directory name
  6442. SeeAlso: #1516
  6443. --------N-21E2--SF10-------------------------
  6444. INT 21 - Novell NetWare - FILE SERVICES - PURGE ERASED FILES (OLD)
  6445.     AH = E2h subfn 10h
  6446.     DS:SI -> request buffer (see #1518)
  6447.     ES:DI -> reply buffer (see #1516)
  6448. Return: AL = status (00h,C6h) (see #1519)
  6449. Desc:    purges files marked for deletion on the file server by the calling
  6450.       workstation
  6451. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6452.       Alloy NTNX
  6453. SeeAlso: AH=13h,AH=41h,AH=E2h/SF=11h,AH=E3h/SF=CEh,AX=F244h,AX=F216h/SF=10h
  6454.  
  6455. Format of NetWare "Purge Erased Files" request buffer:
  6456. Offset    Size    Description    (Table 1518)
  6457.  00h    WORD    0001h (length of following data)
  6458.  02h    BYTE    10h (subfunction "Purge Erased Files")
  6459. SeeAlso: #1516
  6460. --------N-21E2--SF11-------------------------
  6461. INT 21 - Novell NetWare - FILE SERVICES - RESTORE ERASED FILE (OLD)
  6462.     AH = E2h subfn 11h
  6463.     DS:SI -> request buffer (see #1520)
  6464.     ES:DI -> reply buffer (see #1521)
  6465. Return: AL = status (00h,98h,FFh) (see #1519)
  6466. Desc:    restores one file marked for deletion which has not yet been purged
  6467. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6468.       Alloy NTNX
  6469. SeeAlso: AH=13h,AH=41h,AH=E2h/SF=10h,AH=E3h/SF=CEh,AX=F244h
  6470.  
  6471. (Table 1519)
  6472. Values for NetWare function status:
  6473.  00h    successful
  6474.  98h    nonexistent volume
  6475.  9Ch    invalid path
  6476.  C6h    no console rights
  6477.  FFh    no more erased files
  6478. SeeAlso: #1492,#1552
  6479.  
  6480. Format of NetWare "Restore Erased File" request buffer:
  6481. Offset    Size    Description    (Table 1520)
  6482.  00h    WORD    length of following data (max 13h)
  6483.  02h    BYTE    11h (subfunction "Restore Erased File")
  6484.  03h    BYTE    directory handle or 00h
  6485.  04h    BYTE    length of volume name
  6486.  05h  N BYTEs    volume name (including colon)
  6487. Note:    if both a directory handle and a volume name are specified, the volume
  6488.       name overrides the handle
  6489. SeeAlso: #1521,#1771
  6490.  
  6491. Format of NetWare "Restore Erased File" reply buffer:
  6492. Offset    Size    Description    (Table 1521)
  6493.  00h    WORD    (call) 001Eh (size of following results buffer)
  6494.  02h 15 BYTEs    ASCIZ name of erased file
  6495.  11h 15 BYTEs    ASCIZ name under which file was restored
  6496. SeeAlso: #1520,#1771
  6497. --------N-21E2--SF12-------------------------
  6498. INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC PERMANENT DIRECTORY HANDLE
  6499.     AH = E2h subfn 12h
  6500.     DS:SI -> request buffer (see #1522)
  6501.     ES:DI -> reply buffer (see #1523)
  6502. Return: AL = status (00h,98h,9Ch) (see #1519)
  6503. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6504.       Alloy NTNX
  6505. SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=12h
  6506.  
  6507. Format of NetWare "Allocate Permanent Directory Handle" request buffer:
  6508. Offset    Size    Description    (Table 1522)
  6509.  00h    WORD    length of following data (max 103h)
  6510.  02h    BYTE    12h (subfunction "Allocate Permanent Directory Handle")
  6511.  03h    BYTE    directory handle
  6512.  04h    BYTE    drive ('A'-'Z')
  6513.  05h    BYTE    length of directory path
  6514.  06h  N BYTEs    directory path
  6515. SeeAlso: #1523,#1524,#1773
  6516.  
  6517. Format of NetWare reply buffer:
  6518. Offset    Size    Description    (Table 1523)
  6519.  00h    WORD    (call) 0002h (size of following results buffer)
  6520.  02h    BYTE    new directory handle
  6521.  03h    BYTE    effective directory rights (see #1502)
  6522. SeeAlso: #1522,#1773
  6523. --------N-21E2--SF13-------------------------
  6524. INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC TEMPORARY DIRECTORY HANDLE
  6525.     AH = E2h subfn 13h
  6526.     DS:SI -> request buffer (see #1524)
  6527.     ES:DI -> reply buffer (see #1523)
  6528. Return: AL = status (00h,98h,9Ch) (see #1519)
  6529. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6530.       Alloy NTNX
  6531.     this call is the same as AH=E2h/SF=12h except that the directory handle
  6532.       will be automatically deallocated when the calling application
  6533.       executes an End of Job call (AH=D6h) or terminates
  6534. SeeAlso: AH=D6h,AH=E2h/SF=00h,AH=E2h/SF=12h,AH=E2h/SF=14h,AH=E2h/SF=16h
  6535. SeeAlso: AX=F216h/SF=13h
  6536.  
  6537. Format of NetWare "Allocate Temporary Directory Handle" request buffer:
  6538. Offset    Size    Description    (Table 1524)
  6539.  00h    WORD    length of following data (max 103h)
  6540.  02h    BYTE    13h (subfunction "Allocate Temporary Directory Handle")
  6541.  03h    BYTE    directory handle
  6542.  04h    BYTE    drive ('A'-'Z')
  6543.  05h    BYTE    length of directory path
  6544.  06h  N BYTEs    directory path
  6545. SeeAlso: #1522,#1525
  6546. --------N-21E2--SF14-------------------------
  6547. INT 21 - Novell NetWare - DIRECTORY SERVICES - DEALLOCATE DIRECTORY HANDLE
  6548.     AH = E2h subfn 14h
  6549.     DS:SI -> request buffer (see #1525)
  6550.     ES:DI -> reply buffer (see #1526)
  6551. Return: AL = status (00h,9Bh) (see #1492)
  6552. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6553.       Alloy NTNX
  6554. SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=14h
  6555.  
  6556. Format of NetWare "Deallocate Directory Handle" request buffer:
  6557. Offset    Size    Description    (Table 1525)
  6558.  00h    WORD    0002h (length of following data)
  6559.  02h    BYTE    14h (subfunction "Deallocate Directory Handle")
  6560.  03h    BYTE    directory handle
  6561. SeeAlso: #1526
  6562.  
  6563. Format of NetWare reply buffer:
  6564. Offset    Size    Description    (Table 1526)
  6565.  00h    WORD    (call) 0000h (no returned data)
  6566. SeeAlso: #1525
  6567. --------N-21E2--SF15-------------------------
  6568. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH HANDLE
  6569.     AH = E2h subfn 15h
  6570.     DS:SI -> request buffer (see #1527)
  6571.     ES:DI -> reply buffer (see #1528)
  6572. Return: AL = status
  6573.         00h successful
  6574. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6575.       Alloy NTNX
  6576. SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=06h,AH=E2h/SF=19h,AH=E3h/SF=E9h
  6577. SeeAlso: AX=F216h/SF=15h
  6578.  
  6579. Format of NetWare "Get Volume Info with Handle" request buffer:
  6580. Offset    Size    Description    (Table 1527)
  6581.  00h    WORD    0002h (length of following data)
  6582.  02h    BYTE    15h (subfunction "Get Volume Info With Handle")
  6583.  03h    BYTE    directory handle
  6584. SeeAlso: #1528,#1774
  6585.  
  6586. Format of NetWare "Get Volume Info with Handle" reply buffer:
  6587. Offset    Size    Description    (Table 1528)
  6588.  00h    WORD    (call) 001Ch (length of following results buffer)
  6589.  02h    WORD    (big-endian) sectors per block
  6590.  04h    WORD    (big-endian) total blocks on volume
  6591.  06h    WORD    (big-endian) blocks available on volume
  6592.  08h    WORD    (big-endian) total directory slots
  6593.  0Ah    WORD    (big-endian) directory slots available
  6594.  0Ch 16 BYTEs    NUL-padded volume name
  6595.  1Ch    WORD    (big-endian) flag: volume removable if nonzero
  6596. SeeAlso: #1527,#1774
  6597. --------N-21E2--SF16-------------------------
  6598. INT 21 u - Novell NetWare - DIRECTORY SERVICES - ALLOC SPECIAL TEMP DIR HANDLE
  6599.     AH = E2h subfn 16h
  6600.     DS:SI -> request buffer (see #1529)
  6601.     ES:DI -> reply buffer (see #1526)
  6602. Return: AL = status
  6603. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX,
  6604.       but is not described in _NetWare_System_Calls--DOS_
  6605. SeeAlso: AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=16h
  6606.  
  6607. Format of NetWare "Alloc Special Temporary Directory Handle" request buffer:
  6608. Offset    Size    Description    (Table 1529)
  6609.  00h    WORD    length of following data
  6610.  02h    BYTE    16h (subfunction "Allocate Special Temporary Directory Handle")
  6611.  03h    BYTE    source directory handle
  6612.  04h    BYTE    drive name ('A'-'Z')
  6613.  05h    BYTE    path length
  6614.  06h  N BYTEs    directory path
  6615. SeeAlso: #1526
  6616. --------N-21E2--SF17-------------------------
  6617. INT 21 - Novell NetWare - DIRECTORY SERVICES - SAVE DIRECTORY HANDLE
  6618.     AH = E2h subfn 17h
  6619.     DS:SI -> request buffer (see #1530)
  6620.     ES:DI -> reply buffer (see #1531)
  6621. Return: AL = status
  6622.         00h successful
  6623.         else network error code
  6624. Note:    this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
  6625. SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=17h
  6626.  
  6627. Format of NetWare "Save Directory Handle" request buffer:
  6628. Offset    Size    Description    (Table 1530)
  6629.  00h    WORD    0002h (length of following data)
  6630.  02h    BYTE    17h (subfunction "Save Directory Handle")
  6631.  03h    BYTE    directory handle
  6632. SeeAlso: #1531,#1532
  6633.  
  6634. Format of NetWare "Save Directory Handle" reply buffer:
  6635. Offset    Size    Description    (Table 1531)
  6636.  00h    WORD    (call) 0010h (length of following results buffer)
  6637.  02h 16 BYTEs    save buffer
  6638. SeeAlso: #1530,#1533
  6639. --------N-21E2--SF18-------------------------
  6640. INT 21 - Novell NetWare - DIRECTORY SERVICES - RESTORE DIRECTORY HANDLE
  6641.     AH = E2h subfn 18h
  6642.     DS:SI -> request buffer (see #1532)
  6643.     ES:DI -> reply buffer (see #1533)
  6644. Return: AL = status
  6645.         00h successful
  6646.         else network error code
  6647. Desc:    restore a previously saved directory handle to reproduce an executing
  6648.       environment, possibly on a different execution site
  6649. Note:    this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
  6650. SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=18h
  6651.  
  6652. Format of NetWare "Restore Directory Handle" request buffer:
  6653. Offset    Size    Description    (Table 1532)
  6654.  00h    WORD    0011h (length of following data)
  6655.  02h    BYTE    18h (subfunction "Restore Directory Handle")
  6656.  03h 16 BYTEs    save buffer
  6657. SeeAlso: #1530,#1533
  6658.  
  6659. Format of NetWare "Restore Directory Handle" reply buffer:
  6660. Offset    Size    Description    (Table 1533)
  6661.  00h    WORD    (call) 0002h (length of following results buffer)
  6662.  02h    BYTE    new directory handle
  6663.  03h    BYTE    effective rights (see #1502)
  6664. SeeAlso: #1532
  6665. --------N-21E2--SF19-------------------------
  6666. INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY INFORMATION
  6667.     AH = E2h subfn 19h
  6668.     DS:SI -> request buffer (see #1534)
  6669.     ES:DI -> reply buffer (see #1535)
  6670. Return: AL = status (00h,9Bh,9Ch) (see #1492)
  6671. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  6672. SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=0Fh,AX=F216h/SF=19h
  6673.  
  6674. Format of NetWare "Set Directory Information" request buffer:
  6675. Offset    Size    Description    (Table 1534)
  6676.  00h    WORD    length of following data (max 10Bh)
  6677.  02h    BYTE    19h (subfunction "Set Directory Information")
  6678.  03h    BYTE    directory handle
  6679.  04h    DWORD    (big-endian) date and time of creation
  6680.  08h    DWORD    (big-endian) object ID of owner
  6681.  0Ch    BYTE    maximum directory rights (see #1502)
  6682.  0Dh    BYTE    length of directory path
  6683.  0Eh  N BYTEs    directory path
  6684. SeeAlso: #1535
  6685.  
  6686. Format of NetWare reply buffer:
  6687. Offset    Size    Description    (Table 1535)
  6688.  00h    WORD    (call) 0000h (no results returned)
  6689. SeeAlso: #1534
  6690. --------N-21E2--SF1A-------------------------
  6691. INT 21 - Novell NetWare - FILE SERVER - GET PATH FROM DIRECTORY ENTRY
  6692.     AH = E2h subfn 1Ah
  6693.     DS:SI -> request buffer (see #1536)
  6694.     ES:DI -> reply buffer (see #1537)
  6695. Return: AL = status
  6696.         00h successful
  6697. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6698.       Alloy NTNX
  6699. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=06h,AH=E3h/SF=D7h,AX=F216h/SF=1Ah
  6700.  
  6701. Format of NetWare "Get Path from Directory Entry" request buffer:
  6702. Offset    Size    Description    (Table 1536)
  6703.  00h    WORD    0004h (length of following data)
  6704.  02h    BYTE    1Ah (subfunction "Get Path From Directory Entry")
  6705.  03h    BYTE    volume number (00h-1Fh)
  6706.  04h    WORD    (big-endian) directory entry number
  6707. SeeAlso: #1537,#1777
  6708.  
  6709. Format of NetWare "Get Path from Directory Entry" reply buffer:
  6710. Offset    Size    Description    (Table 1537)
  6711.  00h    WORD    (call) size of following results record (max 200h)
  6712.  02h 256 BYTEs    path
  6713. SeeAlso: #1536,#1777
  6714. --------!---Section--------------------------
  6715.